问题描述
社区!提前致谢。我是维克多,下面是我的表格示例的链接。
下面是表格的代码:
d = {'1978': ['10k','20000'],'1979': ['30k','2M'],'1980': ['60000','20k'],'1981': ['10000','1M'],'1982': ['15000','70k'],'1983': ['12k','8M']}
df = pd.DataFrame(data=d)
实际上,我正在工作的那个有 60 列和 200 行。但是,它的结构相同。
我的目标是将多列的所有行的“k”替换为“000”,将“M”替换为“000000”。
所以输出应该是:
我很挣扎,尝试了很多东西。我真的被困住了。
如果有人可以与我分享代码以获得所需的输出,我将不胜感激。再次感谢社区! :)
解决方法
您可以将 pandas.DataFrame.replace
与字典一起用作参数和 regex=True
:
new_df = df.replace({'k':'000',"M": "000000"},regex=True)
,
嗨,一个快速的解决方案是将列转换为字符串,进行字符替换,然后再转换回 int 或 float。这可以逐列完成:
import pandas as pd
d = {'1978': ['10k','20000'],'1979': ['30k','2M'],'1980': ['60000','20k'],'1981': ['10000','1M'],'1982': ['15000','70k'],'1983': ['12k','8M']}
df = pd.DataFrame(data=d)
for col in df.columns:
df[col] = (
df[col].astype(str)
.str.replace("k","000")
.str.replace("M","000000")
.astype(int)
)
或整体:
df = (
df.astype(str)
.str.replace("k","000")
.str.replace("M","000000")
.astype(int)
)