gpt4 book ai didi

python - 如何在不同的DataFrame中映射系列

转载 作者:行者123 更新时间:2023-12-01 03:59:56 27 4
gpt4 key购买 nike

我有两个数据框,一个保存数据集的大部分数据,第二个保存我稍后获得的一些附加数据。

鉴于下面的示例,我想替换存储在 df_main.b 中的值与 df_additional.b 中找到的值我应该通过使用列 order_id 下找到的映射来知道要使用哪些值,存在于两个数据框中。

In [385]: df_main = pd.DataFrame({'order_id':['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7'], 'b':[1,2,3,4,5,6,7], 'c':np.random.randn(7), 'd':np.random.randn(7)})

In [386]: df_additional = pd.DataFrame({'order_id':['A1', 'A2', 'A3', 'A5', 'A6', 'A7', 'A8'], 'b':['a','b','c','d','e','f','g']})

In [387]: df_main
Out[387]:
b c d order_id
0 1 0.460474 -1.092239 A1
1 2 0.872538 1.819610 A2
2 3 -0.343626 -2.493006 A3
3 4 0.489427 0.074341 A4
4 5 -1.690572 0.162746 A5
5 6 -0.851540 0.543129 A6
6 7 -0.559258 -0.170457 A7

In [388]: df_additional
Out[388]:
b order_id
0 a A1
1 b A2
2 c A3
3 d A5
4 e A6
5 f A7
6 g A8

注意 df_main.order_id 中的值如何与 df_additional.order_id 不同.

我想要df_main.b转到np.nan对于 df_main 中存在的这些订单而不是 df_additional (例如 'A4' ,因此 df_main['b'][3] 应变为 np.nan )

我还想要 df_additional 中存在的所有订单并且不存在于 df_main 中可以忽略,df_main 中没有添加任何新内容。 .

最终输出应该是:

>>> final_version
b c d order_id
0 a 0.460474 -1.092239 A1
1 b 0.872538 1.819610 A2
2 c -0.343626 -2.493006 A3
3 NaN 0.489427 0.074341 A4
4 d -1.690572 0.162746 A5
5 e -0.851540 0.543129 A6
6 f -0.559258 -0.170457 A7

感谢您的帮助

编辑我已经尝试过 np.where()结果如下:

In [389]: df_main.b = np.where(df_main.order_id == df_additional.order_id, df_additional.b, np.nan)

In [390]: df_main
Out[390]:
b c d order_id
0 a 0.460474 -1.092239 A1
1 b 0.872538 1.819610 A2
2 c -0.343626 -2.493006 A3
3 NaN 0.489427 0.074341 A4
4 NaN -1.690572 0.162746 A5
5 NaN -0.851540 0.543129 A6
6 NaN -0.559258 -0.170457 A7

事情进展顺利,直到某个点,但似乎比较是按元素进行的,因此在某个点( 'A4' != 'A5' )失败,从那时起所有比较也都失败。是否可以使用某种形式的isin对于所有人order_id df_main 中的值,获取索引并为该索引检索 b值(?)

最佳答案

您正在寻找合并:

pd.merge(df_additional, df_main, how='right', on='order_id')

#Out[13]:
# b_x order_id b_y c d
#0 a A1 1 -2.532221 0.702512
#1 b A2 2 2.550224 -0.649286
#2 c A3 3 0.737817 0.999865
#3 d A5 5 -0.484483 1.153589
#4 e A6 6 0.526035 0.335695
#5 f A7 7 -0.901915 -1.312429
#6 NaN A4 4 -0.905911 0.865345

关于python - 如何在不同的DataFrame中映射系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765401/

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