在 Pandas 中组合以下数据框的最简单方法

Posted

技术标签:

【中文标题】在 Pandas 中组合以下数据框的最简单方法【英文标题】:Simplest way of combing the following dataframes in Pandas 【发布时间】:2020-03-29 11:14:35 【问题描述】:

基本上我有两个 Pandas 数据框 A 和 B,如下所示。将 A 和 B 结合起来得到 C 的最简单/计算速度最快的方法是什么?我目前正在使用for 循环在dfB 中逐行迭代bag_name,但这对于大型数据帧可能会很慢。

我怀疑 Pandas 中必须有一些内置方法来组合这些数据帧 - 如果在其他地方问过这个问题,我深表歉意 - 我不知道要搜索什么关键字。

DataFrame A (dfA)
| bag_name | ID   | price |
|----------|------|-------|
| a        | asdf | 1     |
| b        | qwer | 2     |
| c        | zxcv | 3     |


DataFrame B (dfB)
| bag_name | item_name | weight |
|----------|-----------|--------|
| a        | t         | 2.3    |
| b        | y         | 2.4    |
| b        | u         | 2.5    |
| c        | i         | 2.6    |
| c        | o         | 2.7    |
| c        | p         | 2.7    |

DataFrame C (dfC)
| bag_name | ID   | Price | item_name | weight |
|----------|------|-------|-----------|--------|
| a        | asdf | 1     | t         | 2.3    |
| b        | qwer | 2     | y         | 2.4    |
| b        | qwer | 2     | u         | 2.5    |
| c        | zxcv | 3     | i         | 2.6    |
| c        | zxcv | 3     | o         | 2.7    |
| c        | zxcv | 3     | p         | 2.7    |

【问题讨论】:

这能回答你的问题吗? Flat file databases 【参考方案1】:

你应该使用merge:

dfC = dfA.merge(dfB, on='bag_name')

另一种选择是join

dfC = dfA.join(dfB.set_index('bag_name'), on='bag_name')

【讨论】:

【参考方案2】:

您正在寻找的是左连接。这是它的例子:

df1 = pd.DataFrame([["a", "asdf", 1], ["b", "qwer", 2], ["c", "zxcv", 3]], columns=["bag_name", "ID", "price"])
df2 = pd.DataFrame([["a", "t", 2.3], ["b", "y", 2.4], ["b", "u", 2.5], ["c", "i", 2.6], ["c", "i", 2.7], ["c", "o", 2.7]], columns=["bag_name", "item_name", "weight"])

df3 = pd.merge(df1, df2, how="left", on="bag_name")

它会给你以下结果:

  bag_name    ID  price item_name  weight
0        a  asdf      1         t     2.3
1        b  qwer      2         y     2.4
2        b  qwer      2         u     2.5
3        c  zxcv      3         i     2.6
4        c  zxcv      3         i     2.7
5        c  zxcv      3         o     2.7

【讨论】:

以上是关于在 Pandas 中组合以下数据框的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章

简单的多维 numpy ndarray 到 pandas 数据框的方法?

使用 python/pandas 在 excel 上创建颜色渐变的最简单方法?

用 Pandas 读取 Access 表的最简单方法是啥?

C#:从列表中填充列表框的最简单方法

从字典列表中创建NumPy记录数组的最简单方法?

组合不同(冗长)SQL 语句的列的最简单方法 - MSSQL