Python 分组差异和百分比变化
我有以下数据框Python 分组差异和百分比变化,python,pandas,Python,Pandas,我有以下数据框 t_f m_s uni A False 1.2 A True 0.6 B False 0.9 B True 0.6 m_s_diff m_s_diff_percentage uni A -0.6 -50%
t_f m_s
uni
A False 1.2
A True 0.6
B False 0.9
B True 0.6
m_s_diff m_s_diff_percentage
uni
A -0.6 -50%
B -0.3 -33.33%
我试图得到每个uni的真-假差异,并计算真/假百分比变化
我确信有一种方法可以通过使用group by来做到这一点,但我不知道该怎么做
输出应该是一个数据帧
t_f m_s
uni
A False 1.2
A True 0.6
B False 0.9
B True 0.6
m_s_diff m_s_diff_percentage
uni
A -0.6 -50%
B -0.3 -33.33%
使用查询
df.query('t\u f==True')。m\u s-df.query('t\u f==False')。m\u s
使用查询
df.query('t\u f==True')。m\u s-df.query('t\u f==False')。m\u s
试试这个
df.groupby(level=0)['m_s'].diff().dropna()
uni
A -0.6
B -0.3
Name: m_s, dtype: float64
以下是@MaxU提供的解决方案
df.groupby(level=0)['m_s'].agg(['diff','pct_change']).dropna()
Out[502]:
diff pct_change
uni
A -0.6 -0.500000
B -0.3 -0.333333
试试这个
df.groupby(level=0)['m_s'].diff().dropna()
uni
A -0.6
B -0.3
Name: m_s, dtype: float64
以下是@MaxU提供的解决方案
df.groupby(level=0)['m_s'].agg(['diff','pct_change']).dropna()
Out[502]:
diff pct_change
uni
A -0.6 -0.500000
B -0.3 -0.333333
你能添加预期的输出吗?
df.iloc[::2,:][m_s']-df.iloc[1::2][m_s']
像这样?不清楚这些数据是否代表您的整个输入和输出。这只是我的数据的快照。groupby(level=0)。diff().dropna()@Wen,请把它转换成一个答案。您能添加预期的输出吗?df.iloc[::2,:]['m_s']-df.iloc[1::2]['m_s']
像这样吗?不清楚这些数据是否代表您的全部输入和输出。这只是我的数据的快照。df.groupby(level=0)。diff().dropna()
@Wen,请把它转换为一个答案。小调整:df.groupby(level=0)['m_'].agg(['diff','pct_change'])。dropna()
小调整:df.groupby(level=0)['m_'].agg(['diff','pct_change'])。dropna()