gpt4 book ai didi

python - pd.update 有两个匹配的行

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:18 25 4
gpt4 key购买 nike

我想做的是从 df2 更新空的 df1,它是在通过 API 请求数据的 while 循环中创建的。我想保留 df1 中的所有行及其顺序。

df1:

df = pd.DataFrame({'A': ['c1', 'c1', 'c2','c2', 'c3', 'c3'], 'B': ['y1', 'y2', 'y1', 'y2', 'y1', 'y2'], 'C': ["","","","","",""], 'D': ["","","","","",""]})

A B C D
0 c1 y1
1 c1 y2
2 c2 y1
3 c2 y2
4 c3 y1
5 c3 y2

df2:

values_for_df = pd.DataFrame({'A': ['c1', 'c1', 'c2', 'c3'], 'B': ['y1', 'y2', 'y1', 'y2'], 'C': [4, 5, 4, 6], 'D': [7, 8, 9,""]})

A B C D
0 c1 y1 4 7
1 c1 y2 5 8
2 c2 y1 4 9
3 c3 y2 6


Output:
A B C D
0 c1 y1 4 7
1 c1 y2 5 8
2 c2 y1 4 9
3 c3 y2 6
4 c3 y1
5 c3 y2

Wanted output:

A B C D
0 c1 y1 4 7
1 c1 y2 5 8
2 c2 y1 4 9
3 c2 y2
4 c3 y1
5 c3 y2 6

此过程将重复数千次。有人可以帮助我解决这个问题,分享他的想法/替代方法,或者解释一下为什么实际输出与我的预期输出不同?

最佳答案

尝试:

df = df.set_index(['A','B'])
values_for_df = values_for_df.set_index(['A','B'])
df.update(values_for_df, filter_func=lambda x: x=='')
df.reset_index()

A B C D
0 c1 y1 4 7
1 c1 y2 5 8
2 c2 y1 4 9
3 c2 y2
4 c3 y1
5 c3 y2 6

关于python - pd.update 有两个匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60303867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com