我有一个数据框:
df = pd.DataFrame({"ID": [1,2,3,4,5,6,7], "value": [10,10.00,"123JK",20,10-11,11.00,12.00]})
ID value
1 10
2 10.00
3 123JK
4 20
5 10-11
6 11.00
7 12.00
我只想将浮点值转换为整数,这样:
ID value
1 10
2 10
3 123JK
4 20
5 10-11
6 11
7 12
我尝试了以下代码:
df['ID'] = df['ID'].apply(pd.to_numeric, errors='ignore')
df['ID'].astype(np.int64,errors='ignore')
但它不会将所有浮点值转换为整数。
发布于 2021-10-01 05:19:41
如果只需要对浮点数使用整数,像10.0
这样的整数可以使用自定义函数:
def f(x):
try:
x = pd.to_numeric(x, errors='ignore')
if int(x) == x:
return int(x)
else:
return x
except:
return x
df['value'] = df['value'].apply(f)
print (df)
ID value
0 1 10
1 2 10
2 3 123JK
3 4 20
4 5 10-11
5 6 11
6 7 12
发布于 2021-10-01 05:20:27
好的,假设value
列是text,您可以在这里进行正则表达式替换:
df["value"] = df["value"].str.replace(r'^(\d+)\.\d+$', r'\1')
发布于 2021-10-01 05:20:54
我更喜欢使用fillna
的pd.to_numeric
df['value'] = pd.to_numeric(df['value'], errors='coerce').fillna(df['value'])
这将转换为数值型dtype
并将非数值型数据替换为NaN
。然后,我用字符串填充NaN
s,这将使数值数据保持数值。
https://stackoverflow.com/questions/69400771
复制相似问题