Python 数据框:如何从现有列映射新列

3 python series dataframe pandas

我有一个数据框,其中一列有 4 个不同的值,例如 100、200、300 和 400。我想创建一个新列:

  • 100 变成 25
  • 200 变成 30
  • 300 变成 33
  • 对于 400,它变成 43...等等...

我怎样才能在不循环的情况下做到这一点?

jpp*_*jpp 6

您可以使用字典pd.Series.map

df = pd.DataFrame({'A': [100, 400, 200, 300, 400, 200]})

d = {100: 25, 200: 30, 300: 33, 400: 43}
df['B'] = df['A'].map(d)

print(df)

     A   B
0  100  25
1  400  43
2  200  30
3  300  33
4  400  43
5  200  30
Run Code Online (Sandbox Code Playgroud)

未映射的值将给出NaN. 如果您希望保留未映射的值,您可以在fillna之后:

df['B'] = df['A'].fillna(df['B']).astype(int)
Run Code Online (Sandbox Code Playgroud)