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

时间:2018-11-06 16:21:04

标签: python pandas dataframe series

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

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

如何做到不循环?

1 个答案:

答案 0 :(得分:2)

您可以将字典与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

未映射的值将为NaN。如果您希望保持未映射的值不变,可以在之后fillna

df['B'] = df['A'].fillna(df['B']).astype(int)