[英]pandas convert column to ints not working
我正在尝试从dfA
中删除也在dfB
。
事情是dfA
是对象类型,因此我尝试将其转换为int。 这是代码:
dfA = pd.read_excel('small_file.xlsx',header=None)
dfB = pd.read_csv('large_file.csv',header=None)
dfA = dfA.convert_objects(convert_numeric=True)
dfA[0] = pd.to_numeric(dfA[0],errors='coerce')
dfA = dfA.dropna()
# converting to int
dfA[0] = dfA[0].astype(int) # THIS line gets error
df_output = dfA[~dfA[0].isin(dfB[0])]
这就是dfA的样子
0
0 2293365227
1 3045897298
2 8162414592
3 9312969810
... ...
和dfB
0
0 2030000000
1 2030156119
2 2030389149
... ...
我收到此错误:
ValueError:以10为基数的long()的无效文字:'Goulding'
似乎有一些值-可能是字符串'Goulding'
,无法将其转换为int。
您可以使用to_numeric并在有问题的值处获取NaN:
dfA[0] = pd.to_numeric(dfA[0], errors='coerce')
在将整个列转换为整数之前。
如果您还可以共享excel文件,我可以仔细看看。
对于此类错误,最好仔细观察一下。
采用:
dfA.loc[dfA[0].str.contains('Goulding')]
查找存在索引的索引并查看发生了什么。 然后创建一个过滤掉不良数据并将其应用于序列的函数。 如果遇到其他错误,请冲洗并重复。
例:
def replace_str(x):
return re.search('\d+',x).group(0)
dfA[0] = dfA[0].apply(replace_str)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.