在 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 数据框的方法?