我正在尝试使用从API获得的一些数据更新我的当前数据帧。
我存储的数据:
df = pd.DataFrame({"name":["A", "B", "C"], "balance":[100, 200, 300]})
我获得的数据:
df_new = pd.DataFrame({"name":["B", "C"], "balance":[400, 600]})
我试图得到的结果是:
df = pd.DataFrame({"name":["A", "B", "C"], "balance":[100, 400, 600]})
有没有办法用蟒蛇和熊猫来做到这一点?
您可以使用append
,然后删除重复的
df = df.append(df_new).drop_duplicates('name', keep='last', ignore_index=True)
df
name balance
0 A 100
1 B 400
2 C 600
import pandas as pd
您可以使用concat()
和drop_duplicates()
方法:
resultdf=pd.concat((df,df_new),ignore_index=True).drop_duplicates(subset='name',keep='last',ignore_index=True)
现在,如果你打印resultdf
,你会得到你想要的输出:
name balance
0 A 100
1 B 400
2 C 600
仅在name
列上合并
df['balance'].update(pd.merge(df, df_new, on='name', how='outer')['balance_y'])
# print(df)
name balance
0 A 100
1 B 400
2 C 600
另一个选项:
df.balance = df.name.map(df_new.set_index('name').balance).fillna(df.balance)
df
name balance
0 A 100.0
1 B 400.0
2 C 600.0
使用isnin
的另一个选项
indexs = df[df.name.isin(df_new.name)].index
df.loc[indexs,"balance"] = df_new["balance"].values
df
name balance
0 A 100
1 B 400
2 C 600