python - 如何应用于具有多索引列的数据框中的一组列

标签 python pandas multiple-columns add multi-index

我有一个包含多索引列的数据框,如下所示,我想要为每个用户以及 m1 和 m2 做的是,我需要获取今天的值 + 0.25* 昨天的值。

               m1              m2  
day           yesterday today yesterday today
user                                      
id1           5         6     7         8
id2           3         4     9         10

我尝试了以下方法,但我在所有“今天”列中都得到了 NA 值:

df.iloc[:, df.columns.get_level_values(1)=='today'] = 
df.iloc[:, df.columns.get_level_values(1)=='yesterday'] *0.25 +
 df.iloc[:, df.columns.get_level_values(1)=='today']

我对其他 stackoverflow 帖子的搜索使我找到了按级别 = 0 分组的可能答案,但我不知道如何从那里开始以及如何将函数应用于分组依据的结果。 或许这不是解决这个问题的正确方法?

df.groupby(level=0, axis=1).apply(...)

首先,我需要做的是:

               m1                      m2  
day           yesterday today          yesterday today
user                                      
id1               5     6+0.25*5       7         8+0.25*7
id2               3     4+0.25*3       9         10+0.25*9

最终,我需要:


user           m1              m2             
id1            6+0.25*5        8+0.25*7
id2            4+0.25*3        10+0.25*9

附注这是我第一次在 StackOverflow 上提问,我尽力了!但如果我需要修改我的问题以遵循指南,请告诉我。谢谢!

最佳答案

使用DataFrame.xs用于选择,因此可以将 DataFrame 与多个常数一起添加。

函数的优点是移除了顶层(默认值 drop_level=True)- 因此在输出 DataFrame 中没有 MultiIndex 的情况下工作。

print (df.xs('today', axis=1, level=1))
     m1  m2
id1   6   8
id2   4  10

print (df.xs('yesterday', axis=1, level=1))
     m1  m2
id1   5   7
id2   3   9

df1 = df.xs('today', axis=1, level=1) + 0.25 *df.xs('yesterday', axis=1, level=1)
print (df1)
       m1     m2
id1  7.25   9.75
id2  4.75  12.25

关于python - 如何应用于具有多索引列的数据框中的一组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548882/

相关文章:

python - pandas调整Excel工作表大小以匹配较大的工作表以进行比较

jquery - 使列中的复选框与 'display:none' 一起使用

python - 放大设置-更新事务DF

python - 什么时候使用 df.value_counts() 与 df.groupby ('...' ).count() 比较合适?

MA 和 MACD 的 Python 函数有 "ValueError: negative dimensions are not allowed"

R:将一列中的单词提取到不同列中

python - 在 numpy 中计算距离的更有效方法?

python - cygwin 运行命令而不是 cmd python

python - 如何巧妙地重写曾经使用 XSLT 的 python 脚本?

python - 插值大数据Python