首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从现有的两个单索引数据帧创建多索引数据帧?

如何从现有的两个单索引数据帧创建多索引数据帧?
EN

Stack Overflow用户
提问于 2019-03-21 00:22:17
回答 1查看 47关注 0票数 1

我有两个要合并的数据帧,并在合并期间进行乘法运算。两者之前都有一个索引,生成的数据帧应该有一个多索引:

位置数据

代码语言:javascript
复制
village   rainfall/year
namea     20
nameb     15
namec     30

和时间序列数据。

代码语言:javascript
复制
hour    share of yearly rainfall
0       50.00%
1       30.00%
2       20.00%

作为结果,我正在寻找以下数据帧。

代码语言:javascript
复制
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 from product可以提供帮助,但我还没有弄清楚如何做到这一点。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-03-21 00:27:59

您使用带有临时密钥的merge来创建笛卡尔乘积,然后计算您的值,并使用set_index。

代码语言:javascript
复制
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']

输出:

代码语言:javascript
复制
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

或者,要返回dataframe而不是pd.Series,请使用双括号:

代码语言:javascript
复制
df_out.set_index(['village','hour'])[['rainfall']]

输出:

代码语言:javascript
复制
              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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55265603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档