旋转数据后,我生成了以下熊猫数据框:

df_pivot=df.pivot_table(
values=[1911, 1912, 1916, 1917], index=['h_code','h_name'],
columns=['sort_code', 'reg','c_name','c_code']
)


现在,我想基于对每个'h_name',但对于相同的df,将1917的值除以1911的值的结果,在我的c_new中添加一列(简称为c_name)。因此,每个c_name随后应具有针对=1917/1911的每一行的该除法(h_name)得出的值。

我怎样才能做到这一点?

最佳答案

使用DataFrame.xs进行顶级选择,创建相同的级别名称并用DataFrame.join划分:

a = df_pivot.xs(1917, axis=1,level=0, drop_level=False).rename(columns={1917:'out'})
b = df_pivot.xs(1911, axis=1,level=0, drop_level=False).rename(columns={1911:'out'})


要么:

a = df_pivot[[1917]].rename(columns={1917:'out'})
b = df_pivot[[1911]].rename(columns={1911:'out'})

df_pivot = df_pivot.join(a/b)

关于python - (Python/Pandas)根据条件划分两列数据透视表数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55805384/

10-10 12:46