python - 使用 2 个标识符合并数据帧

标签 python pandas dataframe

我有 2 个数据框,我想将第二个数据框的数据添加到第一个数据框中,以便得到下面的第三个数据框:

第一个数据框:

 dict = [{'name': 'aapl', 'date': '2016-11-29'},
 {'name': 'msft', 'date': '2016-11-29'},
 {'name': 'ge', 'date': '2016-11-29'},
 {'name': 'jpm', 'date': '2016-11-29'},
 {'name': 'aapl', 'date': '2016-11-30'},
 {'name': 'msft', 'date': '2016-11-30'},
 {'name': 'ge', 'date': '2016-11-30'},
 {'name': 'jpm', 'date': '2016-11-30'}]
 df1 = pd.DataFrame(dict)

第二个数据框:

 dict = [{'2016-11-29': 'x1', '2016-11-30': 'y1'},
 {'2016-11-29': 'x2','2016-11-30': 'y2'},
 {'2016-11-29': 'x3','2016-11-30': 'y3'},
 {'2016-11-29': 'x4','2016-11-30': 'y4'}]
 df2 = pd.DataFrame(dict, index=['aapl', 'msft','ge','jpm'])

第三个数据框(目标):

dict = [{'name': 'aapl', 'date': '2016-11-29', 'df2': 'x1'},
 {'name': 'msft', 'date': '2016-11-29', 'df2': 'x2'},
 {'name': 'ge', 'date': '2016-11-29', 'df2': 'x3'},
 {'name': 'jpm', 'date': '2016-11-29', 'df2': 'x4'},
 {'name': 'aapl', 'date': '2016-11-30', 'df2': 'y1'},
 {'name': 'msft', 'date': '2016-11-30', 'df2': 'y2'},
 {'name': 'ge', 'date': '2016-11-30', 'df2': 'y3'},
 {'name': 'jpm', 'date': '2016-11-30', 'df2': 'y4'}]
 df3 = pd.DataFrame(dict)

有没有简单的方法可以做到这一点?

最佳答案

merge 之前使用 melt

newdf2=df2.reset_index().melt('index').rename(columns={'index':'name','variable':'date'})

df3=df1.merge(newdf2,how='left')
df3
         date  name value
0  2016-11-29  aapl    x1
1  2016-11-29  msft    x2
2  2016-11-29    ge    x3
3  2016-11-29   jpm    x4
4  2016-11-30  aapl    y1
5  2016-11-30  msft    y2
6  2016-11-30    ge    y3
7  2016-11-30   jpm    y4

关于python - 使用 2 个标识符合并数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568412/

相关文章:

python - datetime 到 Unix 时间戳,精度为毫秒

python - k-means 使用从 minhash 生成的签名矩阵

python - 属性错误 : 'GridSearchCV' object has no attribute 'best_estimator_'

python - 使用 BeautifulSoup 解析由 <br> 标记分隔的行?

python - 连续数据帧行之间的时间差

python - Pandas DataFrame 中哪些列是二进制的?

python - pandas 数据框中按日期对齐行

python - 根据条件屏蔽 Pandas 数据框中的值

python - 如何在同一列中用组的最小值填充 NaN 值

python按两列分组,按一个索引提取第一个元素