通过匹配列值更新DataFrame索引

时间:2020-03-18 05:15:08

标签: python pandas

请考虑以下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

我该怎么办?

2 个答案:

答案 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
相关问题