我有一个简化的数据框,可以说:
df = pd.DataFrame({'Letter': ['A', 'B', 'A', 'B','A','B','A','B'], 'T/F': [True, True, False, False,True,False,True,False], 'Number':[5, 6, 7, 8, 9,10,11,12]})
我还有其他一些df2,其中已经有(isAB或isTF)的列。我想要做的是使新列类似于df2.loc [:,'A_True],其平均值为A和True。如果我执行以下操作:
df.groupby(['Letter','T/F'])['Number'].mean()[1::2]
这将输出
Letter T/F
A True 8.333333
B True 6.000000
Name: Number, dtype: float64
我希望我的df2包含一列仅是8.33333,6的列。是否需要合并?我想节省时间而不是做
for name,group in df.groupby('Letter'):
df2.loc[df['Letter']==A,'A_True'] = group.loc[group['T/F'==True],'Number'].mean()
答案 0 :(得分:1)
您可以先过滤
public interface IDialogService
{
void ShowDialog(string name, IDialogParameters parameters, Action<IDialogResult> callback);
}
答案 1 :(得分:1)
我们可以使用DataFrame.unstack
:
new_df=df.groupby(['Letter','T/F'],sort=False).Number.mean().unstack()
print(new_df)
T/F True False
Letter
A 8.333333 7.0
B 6.000000 10.0
new_df[True]
Letter
A 8.333333
B 6.000000
Name: True, dtype: float64
修改
new_df=df.groupby(['Letter','T/F'],sort=False).Number.mean().unstack().reset_index()
print(new_df)
T/F Letter True False
0 A 8.333333 7.0
1 B 6.000000 10.0