在Pandas groupby中用字典组合多个列

在Pandas groupby中用字典组合多个列

让我们看看如何在Pandas中使用groupby与字典的方式,借助不同的例子来组合多列。

示例 #1:

# importing pandas as pd 
import pandas as pd 
  
# Creating a dictionary 
d = {'id':['1', '2', '3'],
     'Column 1.1':[14, 15, 16],
     'Column 1.2':[10, 10, 10],
     'Column 1.3':[1, 4, 5],
     'Column 2.1':[1, 2, 3],
     'Column 2.2':[10, 10, 10], }
  
# Converting dictionary into a data-frame 
df = pd.DataFrame(d)
print(df)

输出:

在Pandas groupby中用字典组合多个列

# Creating the groupby dictionary 
groupby_dict = {'Column 1.1':'Column 1',
                'Column 1.2':'Column 1',
                'Column 1.3':'Column 1',
                'Column 2.1':'Column 2',
                'Column 2.2':'Column 2' }
  
# Set the index of df as Column 'id'
df = df.set_index('id')
  
# Groupby the groupby_dict created above 
df = df.groupby(groupby_dict, axis = 1).min()
print(df)

输出:

在Pandas groupby中用字典组合多个列

解释:

  • 这里我们将第1.1栏、第1.2栏和第1.3栏归入第1栏,将第2.1栏、第2.2栏归入第2栏。
  • 注意,每一列的输出是各列的最小值,即在第1列中,第一行的值是第1.1列第1行,第1.2列第1行和第1.3列第1行的最小值。

示例 #2:

# importing pandas as pd 
import pandas as pd 
  
# Create dictionary with data 
dict = {
    "ID":[1, 2, 3],
    "Movies":["The Godfather", "Fight Club", "Casablanca"],
    "Week_1_Viewers":[30, 30, 40],
    "Week_2_Viewers":[60, 40, 80],
    "Week_3_Viewers":[40, 20, 20] };
  
# Convert dictionary to dataframe
df = pd.DataFrame(dict);
print(df)

输出:

在Pandas groupby中用字典组合多个列

# Create the groupby_dict 
groupby_dict = {"Week_1_Viewers":"Total_Viewers",
           "Week_2_Viewers":"Total_Viewers",
           "Week_3_Viewers":"Total_Viewers",
           "Movies":"Movies" }
  
df = df.set_index('ID')
df = df.groupby(groupby_dict, axis = 1).sum()
print(df)

输出:

在Pandas groupby中用字典组合多个列

解释:

  • 在这里,注意到即使’Movies’没有被合并到另一列中,它仍然必须出现在groupby_dict中,否则它就不会出现在最终的数据框架中。
  • 为了计算Total_Viewers,我们使用了.sum()函数,将各行的所有数值相加。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程