python 替换数据框中所有列的多个值 pandas

python replace multiple values from all columns in dataframe pandas

下面是我的 table.

的示例

下面是 table 的代码:

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 行。然而,它是相同的结构。

我的目标是将许多列的所有行替换为“000”的“k”和替换“000000”的“M”。

所以输出应该是:

如果有人可以与我分享获得所需输出的代码,我将不胜感激。

您可以使用 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)
)