[英]How to create a multiindex dataframe from two existing singleindex dataframes?
我有两个要合并的数据帧,并在合并过程中进行乘法。 两者之前都有一个索引,并且生成的数据帧应具有多索引:
位置资料
village rainfall/year
namea 20
nameb 15
namec 30
和时间序列数据。
hour share of yearly rainfall
0 50.00%
1 30.00%
2 20.00%
我正在寻找以下数据框。
village hour rainfall
namea 0 10
1 6
2 4
nameb 0 7.5
1 4.5
2 3
namec 0 15
1 9
2 6
因此,我不仅要合并它们,而且还要在合并过程中进行一些计算。 可悲的是,我不知道如何实现这一目标。 我认为来自产品的Multiindex可能会有所帮助,但我还没有弄清楚如何做。 提前致谢!
您可以使用带有临时键的merge
来创建笛卡尔乘积,然后计算值和set_index。
df_out = df_loc.assign(key=1).merge(df_ts.assign(key=1)).drop('key', axis=1)
df_out['rainfall'] = df_out['rainfall/year'] * (df_out['share of yearly rainfall'].str.strip('%').astype(float) / 100)
df_out.set_index(['village','hour'])['rainfall']
输出:
village hour
namea 0 10.0
1 6.0
2 4.0
nameb 0 7.5
1 4.5
2 3.0
namec 0 15.0
1 9.0
2 6.0
Name: rainfall, dtype: float64
或返回一个数据框而不是pd.Series,请使用双括号:
df_out.set_index(['village','hour'])[['rainfall']]
输出:
rainfall
village hour
namea 0 10.0
1 6.0
2 4.0
nameb 0 7.5
1 4.5
2 3.0
namec 0 15.0
1 9.0
2 6.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.