【问题标题】:How to create a multiindex dataframe from two existing singleindex dataframes?如何从两个现有的单索引数据帧创建多索引数据帧?
【发布时间】:2019-08-11 10:23:03
【问题描述】:

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

位置数据

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 from product 可能会有所帮助,但我还没有弄清楚如何。 提前致谢!

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    您使用merge 和一个临时键来创建一个笛卡尔积,然后计算您的值,并设置_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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2021-01-12
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多