在数据框中减去两组 Pandas Multiindex
Subtract two groups of Pandas Multiindex in a dataframe
我有一个多索引数据框,例如:
df = pd.DataFrame(np.random.randn(4,2), index=pd.MultiIndex.from_tuples([(1900, 'elem1'), (1900, 'elem2'), (1901, 'elem1'), (1901, 'elem2')]),
columns=['col1', 'col2'])
df.index.names=['y', 'elem']
df
col1 col2
y elem
1900 elem1 0.590143 -0.050658
elem2 0.208803 1.739487
1901 elem1 -2.336184 0.151083
elem2 -0.217127 -0.511950
我正在尝试将 1900 和 1901 之间的差异作为数据框的一部分,如下所示:
col1 col2
y elem
1900 elem1 0.590143 -0.050658
elem2 0.208803 1.739487
1901 elem1 -2.336184 0.151083
elem2 -0.217127 -0.511950
diff elem1 -2.926327 0.201741
elem2 -0.42593 -2.251437
关于如何存档此任务的任何建议?非常感谢您的帮助!
从 1901 中减去 1900,将 diff
附加到索引并连接回主 df:
temp = (df.loc[1901]
.sub(df.loc[1900], axis = 0)
.set_index([['diff', 'diff']], append = True)
.swaplevel()
)
pd.concat([df, temp])
我有一个多索引数据框,例如:
df = pd.DataFrame(np.random.randn(4,2), index=pd.MultiIndex.from_tuples([(1900, 'elem1'), (1900, 'elem2'), (1901, 'elem1'), (1901, 'elem2')]),
columns=['col1', 'col2'])
df.index.names=['y', 'elem']
df
col1 col2
y elem
1900 elem1 0.590143 -0.050658
elem2 0.208803 1.739487
1901 elem1 -2.336184 0.151083
elem2 -0.217127 -0.511950
我正在尝试将 1900 和 1901 之间的差异作为数据框的一部分,如下所示:
col1 col2
y elem
1900 elem1 0.590143 -0.050658
elem2 0.208803 1.739487
1901 elem1 -2.336184 0.151083
elem2 -0.217127 -0.511950
diff elem1 -2.926327 0.201741
elem2 -0.42593 -2.251437
关于如何存档此任务的任何建议?非常感谢您的帮助!
从 1901 中减去 1900,将 diff
附加到索引并连接回主 df:
temp = (df.loc[1901]
.sub(df.loc[1900], axis = 0)
.set_index([['diff', 'diff']], append = True)
.swaplevel()
)
pd.concat([df, temp])