【问题标题】:Python: Merging/joining two dataframesPython:合并/连接两个数据框
【发布时间】:2014-03-23 18:11:55
【问题描述】:

我正在尝试合并/加入两个数据框,每个数据框都有三个键(Age、Gender 和 Signed_In)。两个数据框具有相同的父级,并且由 groupby 创建,但具有唯一值列。

鉴于唯一的组合键在两个数据帧之间共享,看来合并/连接应该是轻松的。认为我尝试“合并”和“加入”一定有一些简单的错误,但我终生无法解决。

times = pd.read_csv('nytimes.csv')

# Produces times_mean table consisting of two value columns, avg_impressions and avg_clicks
times_mean = times.groupby(['Age','Gender','Signed_In']).mean()
times_mean.columns = ['avg_impressions', 'avg_clicks']

# Produces times_max table consisting of two value columns, max_impressions and max_clicks
times_max = times.groupby(['Age','Gender','Signed_In']).max()
times_max.columns = ['max_impressions', 'max_clicks']

# Following intended to produce combined table with four value columns
times_join = times_mean.join(times_max, on = ['Age', 'Gender', 'Signed_In'])
times_join2 = pd.merge(times_mean, times_max, on=['Age', 'Gender', 'Signed_In'])

【问题讨论】:

  • 如果没有nytimes.csv,我们将无法对此进行测试。我的猜测是,由于 'Age', 'Gender', 'Signed_In' 是索引,因此在调用 join 时不需要 on kwarg
  • 另外,你应该提供错误是什么。
  • 欣赏笔记,我第一次发帖——绝对应该包含原始文件。

标签: python join merge pandas


【解决方案1】:

加入同等结构的MultiIndex时,您不需要on kwarg

下面是一个例子:

import numpy as np
import pandas

a = np.random.normal(size=10)
b = a + 10
index = pandas.MultiIndex.from_product([['A', 'B'], list('abcde')])

df_a = pandas.DataFrame(a, index=index, columns=['colA'])
df_b = pandas.DataFrame(b, index=index, columns=['colB'])

df_a.join(df_b)

这给了我:

    colA       colB
A a -1.525376   8.474624
  b  0.778333  10.778333
  c  1.153172  11.153172
  d  0.966560  10.966560
  e  0.089765  10.089765
B a  0.717717  10.717717
  b  0.305545  10.305545
  c  0.123548  10.123548
  d -1.018660   8.981340
  e -0.635103   9.364897

【讨论】:

  • 谢谢,解决了。还有,之前没见过MultiIndex——干杯。
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2018-09-27
  • 2017-06-08
相关资源
最近更新 更多