如果列在字典键的值,设为B列到字典值大熊猫数据帧
问题描述:
说我有一个数据帧,看起来像:如果列在字典键的值,设为B列到字典值大熊猫数据帧
df=pd.DataFrame({'a':['A','A','B','C'],'b':[1,2,3,4]})
a b
0 A 1
1 A 2
2 B 3
3 C 4
和看起来像这样一本字典:
convert={'A':9,'C':8}
如果列a
的值在convert
的键中,那么列b
的相应行应更改为字典值。这样,输出将如下所示:
a b
0 A 9
1 A 9
2 B 3
3 C 8
我在想沿着这个东西线(不工作):
pd.np.where(df['a'].isin(convert),convert[df['a']],df['b'])
答
您可以使用map
与fillna
; df.a.map(convert)
映射值一个列如果键存在否则NaN
,然后使用fillna(df.b)
填补从柱失踪值b值在字典的对应值:
df['b'] = df.a.map(convert).fillna(df.b)
df
# a b
#0 A 9.0
#1 A 9.0
#2 B 3.0
#3 C 8.0