如何在Pandas Groupby中把数据框架的行分组到列表中
假设你有一个由两列组成的Pandas DataFrame,我们想对这些列进行分组。在这篇文章中,我们将讨论同样的问题。
创建Dataframe,将Dataframe的行分成一个列表
# importing pandas as pd
import pandas as pd
# Create the data frame
df = pd.DataFrame({'column1': ['A', 'B', 'C', 'A', 'C',
'C', 'B', 'D', 'D', 'A'],
'column2': [5, 10, 15, 20, 25, 30,
35, 40, 45, 50]})
# Print the dataframe
df
输出:
在Pandas中使用apply()将行分组为一个列表
我们可以在第1列使用groupby()方法,并在pandas DataFrame的每一组上应用该方法来应用一个列表。
# importing pandas as pd
import pandas as pd
# Create the data frame
df = pd.DataFrame({'column1': ['A', 'B', 'C', 'A', 'C',
'C', 'B', 'D', 'D', 'A'],
'column2': [5, 10, 15, 20, 25, 30,
35, 40, 45, 50]})
# Use groupby method and apply
# method on the dataframe
df = df.groupby('column1')['column2'].apply(list)
# Print the dataframe again
df
输出:
在Pandas中把行分成一个列表使用lambda
我们可以在第1列上使用groupby()方法,在pandas DataFrame的每一组上使用agg()方法来应用聚合,该方法由lambda函数组成。
# importing pandas as pd
import pandas as pd
# Create the dataframe
df = pd.DataFrame({'column1': ['A', 'B', 'C', 'A', 'C',
'C', 'B', 'D', 'D', 'A'],
'column2': [5, 10, 15, 20, 25, 30,
35, 40, 45, 50]})
# Use groupby method and agg method
# with lambda function on the dataframe
df = df.groupby('column1').agg({'column2': lambda x: list(x)})
# Print the dataframe again
df
输出:
在Pandas中把行分成一个列表使用agg()
我们可以在column1上使用groupby()方法,并在pandas DataFrame的每一组上使用agg()方法来应用聚合列表。
# importing pandas as pd
import pandas as pd
# Create the data frame
df = pd.DataFrame({'column1': ['A', 'B', 'C', 'A', 'C',
'C', 'B', 'D', 'D', 'A'],
'column2': [5, 10, 15, 20, 25, 30,
35, 40, 45, 50]})
# Use groupby method and agg method
# with list as argument on the dataframe
df = df.groupby('column1').agg(list)
df
输出:
在Pandas中使用Pandas tolist将行分组为一个列表
我们可以通过传递’pd.Series.tolist’作为参数,对第1列使用groupby()方法,并使用agg()方法。
# importing pandas as pd
import pandas as pd
# Create the data frame
df = pd.DataFrame({'column1': ['A', 'B', 'C', 'A', 'C',
'C', 'B', 'D', 'D', 'A'],
'column2': [5, 10, 15, 20, 25, 30,
35, 40, 45, 50]})
# Use groupby method and agg method with
# pd.Series.tolist as argument on the dataframe
df = df.groupby('column1').agg(pd.Series.tolist)
df
输出: