【发布时间】:2019-01-14 03:56:23
【问题描述】:
我有两个数据帧,我想从数据帧 A 中取一个由一组其他两列分组的列的中位数,然后将计算出的中位数合并到数据帧 B 中。让我用下面的例子来解释一下:
我有两个DataFrames,看起来像
# DataFrame 1
pu_c do_c fare
0 0 5 10
1 0 5 20
2 1 1 3
# DataFrame 2
pu_c do_c
0 0 3
1 0 5
2 1 1
我想取fare 的中位数,按pu_c 和do_c 分组:
a = df1.groupby(['pu_c', 'do_c']).median()['fare']
这将导致:
pu_c do_c
0 5 15
1 1 3
现在我想将在a 中计算的中值票价从df1 合并到另一个数据框,例如df2。我知道如何使用 for 循环和凌乱的代码来做到这一点。我想知道是否有使用 pandas 的 merge 或 concat 函数的有效方法。
在这个例子中我想要的输出是
pu_c do_c median_fare
0 0 3 NaN (or whatever)
1 0 5 15
2 1 1 3
注意:要重现我的数据框,请使用:
import pandas as pd
pu_c = [0, 0, 1]
do_c = [5, 5, 1]
do_c2 = [3, 5, 1]
fare = [10, 20, 3]
df1 = pd.DataFrame({'pu_c': pu_c, 'do_c': do_c, 'fare': fare})
df2 = pd.DataFrame({'pu_c': pu_c, 'do_c': do_c2})
【问题讨论】:
标签: python python-2.7 pandas pandas-groupby