【问题标题】:Join Dataframes by column and create new columns by value Pandas Python按列加入数据框并按值创建新列 Pandas Python
【发布时间】:2020-04-15 21:43:04
【问题描述】:

我有 2 个数据框 df1 和 df2,我正在尝试按列(产品)合并。

df1 
    product name    Exist
0     1      foo    False
1     2      bar    True
2     3      lorem  False
3     4      ipsum  False
.
.


df2
    product date_search sold
0     1      2020-04-10 10
1     1      2020-04-11 15
2     1      2020-04-12 20
3     2      2020-04-10 8
4     2      2020-04-11 10
5     2      2020-04-12 30
6     3      2020-04-10 2
7     3      2020-04-11 5
8     3      2020-04-12 7
9     4      2020-04-10 4
10    4      2020-04-11 10
11    4      2020-04-12 15
.
.

我想将新列附加到结果数据帧,其中 df2 的值作为列,df2 的其他值作为值,有人可以帮助我吗?像下面这样:

df2
    product Exists 2020-04-10 2020-04-11 2020-04-12 
0     1     False      10         15        20
1     2     True        8         10        30
2     3     False       2          5         7
3     4     False       4         10        15
.
.

谢谢!

【问题讨论】:

  • How to pivot a dataframePandas merging 101 都是相关的。根据您自己的研究,到目前为止您尝试了哪些方法?
  • df1.merge(df2.pivot(*df2), left_on='product', right_index=True, how='left' )

标签: python pandas dataframe join merge


【解决方案1】:

@Quang Hoang 做到了——只要这样做:

import pandas as pd

dict1 = {"product" : [1,2,3,4], "name" : ['foo','bar','lorem','ipsum'], "exists": ['false','true','false','false']}
dict2 = {"product" : [1,1,2,2,3,3,4,4], "date": ['2020-01-01','2020-01-02','2020-01-01','2020-01-02','2020-01-01','2020-01-02','2020-01-01','2020-01-02'], "quantity": [10,14,15,4,6,77,34,9]}
df1 = pd.DataFrame.from_dict(dict1)
df2 = pd.DataFrame.from_dict(dict2)


df1.merge(df2.pivot(*df2), left_on='product', right_index=True, how='left' )

【讨论】:

  • 谢谢@Quang Hoang,效果很好。
猜你喜欢
  • 2021-05-03
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多