繁体   English   中英

如何在具有不同索引和非唯一键的两个pandas数据帧中连接列

[英]How do I concatenate columns in two pandas dataframes with different indexes and non-unique keys

我有一个名为products数据框,如下所示:

   order_number  sku  units revenue
1  5000          754  1     20.0
2  5000          900  4     30.0
3  5001          754  2     40.0
4  5002          754  10    200.0
.  ...           ...  ..    ...

和另一个看起来像这样的orders

   date    order_number  units revenue  country new_customer ...
1  1-jan   5000          5     50.0     russia  yes          
2  1-jan   5001          2     40.0     china   yes          
3  2-jan   5002          10    200.0    france  no
4  2-jan   5003          1     70.0     brazil  yes
.  ....    ...           ..    ...      ...

我想创建一个数据框,其中包含products数据框中的行,但另外还有orders数据框中的列,其中orders中的订单编号与products中的订单编号相匹配。

我试图通过pandas.concatpandas.merge找到一种表达方式,但我无法解决我加入的密钥(order_number)在orders数据框中是唯一的问题,但不是products数据框。

如何在熊猫中进行这样的多对一连接?

我认为你正在寻找join (你必须提供一个后缀,因为你有一个重复的列revenue ):

>>> import pandas as pd
>>> products = pd.DataFrame({'order_number': [5000, 5000, 5001, 5002, 5004],
...                          'sku':          [ 754,  900,  754,  754,  900],
...                          'revenue':      [20.0, 30.0, 40.0,200.0, 90.0]})
>>> orders   = pd.DataFrame({'order_number': [5000, 5001, 5002, 5003],
...                          'units':        [   5,    2,   10,    1],
...                          'revenue':      [50.0, 40.0,200.0, 70.0]})
>>> products.join(orders.set_index('order_number'), 'order_number', rsuffix='_o')
   order_number  revenue  sku  revenue_o  units
0          5000       20  754         50      5
1          5000       30  900         50      5
2          5001       40  754         40      2
3          5002      200  754        200     10
4          5004       90  900        NaN    NaN

编辑 :使用products.merge(orders, 'left', 'order_number', suffixes=('', '_o'))可以实现相同的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM