重复在DataFrame Python 2.7 Pandas 0.17.1中将列添加为行

时间:2017-09-06 17:14:24

标签: python pandas

我想要合并2个数据帧,但它们不共享索引

第一个具有以下结构:

date mail_volume 2011-01-01 100 2011-02-01 150 2011-03-01 125 ...

第二个是使用分位数函数创建的:

df.quantile([.25,.50,.75])

并具有以下结构:

mail_volume 0.25 110 0.50 120 0.75 130

我想创建一个具有以下结构的第三个数据框,其中每个月重复分位数结果以及原始结果:

date mail_volume metric_type 2011-01-01 100 result 2011-01-01 110 .25 2011-01-01 120 .50 2011-01-01 130 .75 2011-02-01 150 result 2011-02-01 110 .25 2011-02-01 120 .50 2011-02-01 130 .75

我已搜索过追加并向数据框插入行,但由于需要重复日期并添加metric_type列,因此无法解决我的问题。

提前致谢, 埃里克

1 个答案:

答案 0 :(得分:0)

让我们进行笛卡尔合并并与原始数据框连接:

pd.concat([df.assign(metric_type='result'),
           df.assign(key=1).merge(df2.reset_index().assign(key=1), on='key', suffixes=('_x',''))[['date','mail_volume','index']].rename(columns={'index':'metric_type'})])\
  .sort_values(by='date')

输出:

       date  mail_volume metric_type
0  2011-01-01          100      result
0  2011-01-01          110        0.25
1  2011-01-01          120         0.5
2  2011-01-01          130        0.75
1  2011-02-01          150      result
3  2011-02-01          110        0.25
4  2011-02-01          120         0.5
5  2011-02-01          130        0.75
2  2011-03-01          125      result
6  2011-03-01          110        0.25
7  2011-03-01          120         0.5
8  2011-03-01          130        0.75