(Python / Pandas)根据条件划分两列透视数据框

时间:2019-04-23 06:20:50

标签: python pandas

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

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”的值将1917年的值除以1911年的值所得的结果,在我的df中添加一列(简称为c_new),相同的c_name。因此,每个c_name的值都应该由=1917/1911的每一行的除法(h_name)得出。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用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)