import pandas as pd
df = pd.DataFrame([["one", 1.2, "", "4,3"],
["two","1,7", "2,4", 0.55],
["three","", 5.4, "3,9"]],
columns=['a','b','c','d'])
我如何可以替换列中的逗号b键d至点,使这些列的数字? 列(或任意数量的前导列的)应当保留不变(可以包含逗号为好)替换逗号小数点的数据帧列,使其数字
import pandas as pd
df = pd.DataFrame([["one", 1.2, "", "4,3"],
["two","1,7", "2,4", 0.55],
["three","", 5.4, "3,9"]],
columns=['a','b','c','d'])
我如何可以替换列中的逗号b键d至点,使这些列的数字? 列(或任意数量的前导列的)应当保留不变(可以包含逗号为好)替换逗号小数点的数据帧列,使其数字
import re
for col in ['b', 'c', 'd']:
df[col] = pd.to_numeric(df[col].apply(lambda x: re.sub(',', '.', str(x))))
你可以试试这个:
df = df.set_index('a')
df.apply(lambda x: x.str.replace(',','.')).combine_first(df).apply(lambda x:pd.to_numeric(x,errors='coerce')).reset_index()
输出:
a b c d
0 one 1.2 NaN 4.30
1 two 1.7 2.4 0.55
2 three NaN 5.4 3.90
df = pd.DataFrame([["one", 1.2, "", "4,3"],
["two","1,7", "2,4", 0.55],
["three","", 5.4, "3,9"],
["comma, here","2,1",1.2,""]],
columns=['a','b','c','d'])
df = df.set_index('a')
df2 = df.apply(lambda x: x.str.replace(',','.')).combine_first(df).apply(lambda x:pd.to_numeric(x,errors='coerce')).reset_index()
print(df2)
a b c d
0 one 1.2 NaN 4.30
1 two 1.7 2.4 0.55
2 three NaN 5.4 3.90
3 comma, here 2.1 1.2 NaN
谢谢,这将完成这项工作:for col in df.columns [6:]: – ronnydw