我正在处理IMDB数据集,并且具有以下电影表的记录
import sqlite3
import pandas as pd
conn=sqlite3.connect('Db-IMDB.db')
result1=pd.read_sql_query('select year from Movie order by year',conn)
print(type(result1))
print(result1)
我得到如下所示的输出
<class 'pandas.core.frame.DataFrame'>
year
0 1931
1 1936
2 1936
3 1936
4 1939
... ...
3470 IV 2011
3471 IV 2017
3472 V 2015
3473 VI 2015
3474 XVII 2016
[3475 rows x 1 columns]
年份列的数据类型是文本。
那么我能知道如何仅获取数据的数字部分,以便进行%之类的数字操作,以便在sqlite中获得leap年吗?
答案 0 :(得分:0)
使用正则表达式:
NavigationView {
List {
...
...
}.navigationBarTitle("New", displayMode: .inline)
.navigationBarItems(trailing:
HStack {
Button(action: { self.onDismiss() }) {
Text("Cancel")
}
}
)
}
输出:
def findNum(x):
return re.findall(r'[0-9]+',x)[0]
df = pd.DataFrame({
'a':['IV 2014','2015','v 2016']
})
#float just for typecasting so that use can do numeric operations
print(df['a'].apply(findNum).apply(float))
答案 1 :(得分:0)
如示例所示,如果非数字是罗马数字和数字组件左侧的空格,则可以使用SQLite的ltrim
函数:
sqlite> select ltrim("XVI 1955", "CDILMVX ");
1955
您可能要考虑一个更全面的字符列表,例如
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ "