繁体   English   中英

熊猫将列转换为整数不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM