如何列出每个Pandas组的值
在这篇文章中,我们将看到如何显示一个数据框架所划分的每个组的所有值。首先使用DataFrame.groupby()方法将数据框架划分为若干组。然后我们对其进行修改,使每个组都包含在一个列表中的值。
首先,让我们创建一个数据框架。
# import pandas library
import pandas as pd
# create a dataframe
df = pd.DataFrame({'a': ['A', 'A', 'B',
'B', 'B', 'C',
'C', 'D'],
'b': [1, 2, 5,
3, 5, 4,
8, 6]})
# show the dataframe
df
输出:
方法1:使用 DataFrame.groupby()和Series.apply() 一起。
例子:我们将创建每个组的所有值的列表,并将其存储在名为 “listvalues “的新列中。
# import pandas library
import pandas as pd
# create a dataframe
df = pd.DataFrame({'a': ['A', 'A', 'B',
'B', 'B', 'C',
'C', 'D'],
'b': [1, 2, 5,
3, 5, 4,
8, 6]})
# convert values of each group
# into a list
groups = df.groupby('a')['b'].apply(list)
print(groups)
# groups store in a new
# column called listvalues
df1 = groups.reset_index(name
= 'listvalues')
# show the dataframe
df1
输出:
方法2:使用 DataFrame.groupby()和Series.agg() 。
例子:我们在Series.agg()内使用**lambda函数,将一个组的所有值转换为一个列表。
# import pandas library
import pandas as pd
# create a dataframe
df = pd.DataFrame( {'a': ['A', 'A', 'B',
'B', 'B', 'C',
'C', 'D'],
'b': [1, 2, 5,
3, 5, 4,
8, 6]}
)
# convert values of each group
# into a list
groups = df.groupby('a').agg(lambda
x: list(x))
print(groups)
输出: