Pandas groupby agg returns 多索引列如何删除多索引?
Pandas groupby agg returns multiindex columns how to remove multiindex?
我想了解如何在应用 groupby 和 agg 后删除多索引列 - 见下文,最后一个命令 returns (Target, count), (Target, sum) 多索引列,但我想要一个数据框没有多索引
# Sample Data Creation
lst_Purchase_Date = ['2022-02-28','2022-02-28','2022-02-28','2022-03-01','2022-03-01']
lst_Target = [0,0,1,1,1]
df_test = pd.DataFrame(list(zip(lst_Purchase_Date,lst_Target)),columns=['Purchase_Date','Target'])
df_test.head()
Purchase_Date Target
0 2022-02-28 0
1 2022-02-28 0
2 2022-02-28 1
3 2022-03-01 1
4 2022-03-01 1
在列多索引中使用 groupby 和 agg 结果
result = df_test.groupby('Purchase_Date').agg(['sum','count'])
result = result.reset_index()
result.head()
Purchase_Date Target
sum count
0 2022-02-28 1 3
1 2022-03-01 2 2
我需要如下结果
Purchase_Date Target_Sum Target_Count
2022-02-28 1 3
2022-03-01 2 2
您可以对 agg 使用更详细的语法,您可以在左侧指定列名,然后是要操作的列,然后是要应用的函数
import pandas as pd
df = pd.DataFrame(
{'Purchase_Date':
{0: '2022-02-28',
1: '2022-02-28',
2: '2022-02-28',
3: '2022-03-01',
4: '2022-03-01'},
'Target': {0: 0, 1: 0, 2: 1, 3: 1, 4: 1}}
)
result = df.groupby('Purchase_Date').agg(
Target_Sum = ('Target','sum'),
Target_Count = ('Target','count'),
)
result
我想了解如何在应用 groupby 和 agg 后删除多索引列 - 见下文,最后一个命令 returns (Target, count), (Target, sum) 多索引列,但我想要一个数据框没有多索引
# Sample Data Creation
lst_Purchase_Date = ['2022-02-28','2022-02-28','2022-02-28','2022-03-01','2022-03-01']
lst_Target = [0,0,1,1,1]
df_test = pd.DataFrame(list(zip(lst_Purchase_Date,lst_Target)),columns=['Purchase_Date','Target'])
df_test.head()
Purchase_Date Target
0 2022-02-28 0
1 2022-02-28 0
2 2022-02-28 1
3 2022-03-01 1
4 2022-03-01 1
在列多索引中使用 groupby 和 agg 结果
result = df_test.groupby('Purchase_Date').agg(['sum','count'])
result = result.reset_index()
result.head()
Purchase_Date Target
sum count
0 2022-02-28 1 3
1 2022-03-01 2 2
我需要如下结果
Purchase_Date Target_Sum Target_Count
2022-02-28 1 3
2022-03-01 2 2
您可以对 agg 使用更详细的语法,您可以在左侧指定列名,然后是要操作的列,然后是要应用的函数
import pandas as pd
df = pd.DataFrame(
{'Purchase_Date':
{0: '2022-02-28',
1: '2022-02-28',
2: '2022-02-28',
3: '2022-03-01',
4: '2022-03-01'},
'Target': {0: 0, 1: 0, 2: 1, 3: 1, 4: 1}}
)
result = df.groupby('Purchase_Date').agg(
Target_Sum = ('Target','sum'),
Target_Count = ('Target','count'),
)
result