如果存在新数据,则更新熊猫数据帧



我正在尝试使用从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

最新更新