如何在Pandas中处理数字列上的字符串?

fkaflof6  于 2023-03-16  发布在  其他
关注(0)|答案(3)|浏览(139)

我有一个大数据集,我不能将dtype从object转换为int,因为错误 “invalid literal for int()with base 10:“ 我做了一些研究,这是因为列中有一些字符串。
如何找到这些字符串并将其替换为数值?

yh2wf1be

yh2wf1be1#

您可能正在寻找.str.isnumeric(),它只允许您过滤这些字符串中的数字的数据,并独立地对它们进行操作......但是您需要决定这些值应该是什么

  • 转换(可能是货币,您想截断,或者其他非UNIX纪元的日期格式,或者任何可能性。)
  • dropped(只是扔掉它们)
  • 别东西
>>> df = pd.DataFrame({"a":["1", "2", "x"]})
>>> df
   a
0  1
1  2
2  x
>>> df[df["a"].str.isnumeric()]
   a
0  1
1  2
>>> df[~df["a"].str.isnumeric()]
   a
2  x
hfyxw5xn

hfyxw5xn2#

假定“col”为列名。
出错时强制转换为数值或NaN:

df['col_num'] = pd.to_numeric(df['col'], errors='coerce')

如果需要,您可以使用以下方法检查哪些原始值给出NaN:

df.loc[df['col'].notna()&df['col_num'].isna(), 'col']
sycxhyv7

sycxhyv73#

以10为基数表示它是一个浮点数。所以在python中,你可以这样做

int(float(____))

因为使用了int(),所以我猜您需要一个整数值。

相关问题