请考虑以下pandas.DataFrame
:
>>> import pandas as pd
>>> df = pd.DataFrame({
... "sym": ["a", "b", "c"],
... "del": [1, 2, 3]
... })
并考虑以下dict
:
>>> d = [{"sid": 99, "sym": "b"}, {"sid": 88, "sym": "c"}]
我需要用df
匹配的sid
的值更新sym
的索引。对于此示例,我的输出将如下所示:
>>> df
sym del
0 a 1
99 b 2
88 c 3
我该怎么办?
答案 0 :(得分:2)
在字典中使用Series.map
,然后用原始索引值替换缺少的值:
X
d = [{"sid": 99, "sym": "b"}, {"sid": 88, "sym": "c"}]
d1 = {x['sym']:x['sid'] for x in d}
df.index = df['sym'].map(d1).fillna(df.index.to_series()).astype(int).rename(None)
print (df)
sym del
0 a 1
99 b 2
88 c 3
答案 1 :(得分:1)
将字典列表转换为数据框后,这是使用merge
的一种方法:
m = df.merge(pd.DataFrame(d),on='sym',how='left')
df.index = m['sid'].fillna(df.index.to_series()).astype(int).rename(None)
print(df)
sym del
0 a 1
99 b 2
88 c 3