我正在尝试创建一个新的列
,其中包含基于单独列
中的值的值。具体来说,对于下面的 df,其中 ['Val'] == 'A','B','C'
中的值我想插入 ' X'
到 ['New_Val']
。与 'D','E','F'
类似,但插入 'Y'
import pandas as pd
d = ({
'Val' : ['A','B','C','D','E','F'],
})
df = pd.DataFrame(data = d)
Xs = ['A','B','C']
Ys = ['D','E','F']
df['New_Val'] = df.loc['New_Val'].loc[df['Val'] == Xs] = 'X'
df['New_Val'] = df.loc['New_Val'].loc[df['Val'] == Ys] = 'Y'
预期输出:
Val New_Val
0 A X
1 B X
2 C X
3 D Y
4 E Y
5 F Y
最佳答案
使用Series.map
按字典:
#specify values
d = {'X':Xs, 'Y':Ys}
print (d)
{'X': ['A', 'B', 'C'], 'Y': ['D', 'E', 'F']}
#swap key values in dict of lists
#http://stackoverflow.com/a/31674731/2901002
d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}
print (d1)
{'A': 'X', 'B': 'X', 'C': 'X', 'D': 'Y', 'E': 'Y', 'F': 'Y'}
df['New_Val'] = df['Val'].map(d1)
print (df)
Val New_Val
0 A X
1 B X
2 C X
3 D Y
4 E Y
5 F Y
关于python - 当列等于特定值时,将新值插入新列 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605482/