Python 如何通过包含列表变量的字段创建DataFrame.groupby
我有一个这样的数据框Python 如何通过包含列表变量的字段创建DataFrame.groupby,python,list,pandas,grouping,Python,List,Pandas,Grouping,我有一个这样的数据框 import pandas as pd df = pd.DataFrame({'key1':pd.Series(data = ['a','b','c','d'], index = [0,1,2,3]), 'key2':pd.Series(data = [3,4,2,3],index = [0,1,2,3]), 'key3':pd.Series(data = [0.3,0.5,0.3,0.3],index = [0,1,2,3]), 'key4':pd.Series(data
import pandas as pd
df = pd.DataFrame({'key1':pd.Series(data = ['a','b','c','d'], index = [0,1,2,3]), 'key2':pd.Series(data = [3,4,2,3],index = [0,1,2,3]), 'key3':pd.Series(data = [0.3,0.5,0.3,0.3],index = [0,1,2,3]), 'key4':pd.Series(data = [[1,2,3],[4,3,6],[1,2,3],[1,2]], index = [0,1,2,3])})
我想做:
df.groupby('key4').describe()
但这是一个错误
我的目的是创建键4中具有类似值的组。您可以首先将该列转换为字符串,然后描述:
df.groupby(df.key4.astype(str)).describe()
不能按任何包含不可损坏类型的列进行分组,列表就是其中之一,例如,如果执行了
df.groupby('key4')。head()
会产生错误:
TypeError:不可损坏的类型:“列表”
如果您使用元组作为数据,则可以按该列分组,您可以通过执行以下操作进行转换:
在[454]中:
df['key4'] = df['key4'].apply(lambda x: tuple(x))
df
Out[454]:
key1 key2 key3 key4
0 a 3 0.3 (1, 2, 3)
1 b 4 0.5 (4, 3, 6)
2 c 2 0.3 (1, 2, 3)
3 d 3 0.3 (1, 2)
然后,您可以通过该列调用对其进行分组描述
:
In [455]:
df.groupby('key4').describe()
Out[455]:
key2 key3
key4
(1, 2) count 1.000000 1.0
mean 3.000000 0.3
std NaN NaN
min 3.000000 0.3
25% 3.000000 0.3
50% 3.000000 0.3
75% 3.000000 0.3
max 3.000000 0.3
(1, 2, 3) count 2.000000 2.0
mean 2.500000 0.3
std 0.707107 0.0
min 2.000000 0.3
25% 2.250000 0.3
50% 2.500000 0.3
75% 2.750000 0.3
max 3.000000 0.3
(4, 3, 6) count 1.000000 1.0
mean 4.000000 0.5
std NaN NaN
min 4.000000 0.5
25% 4.000000 0.5
50% 4.000000 0.5
75% 4.000000 0.5
max 4.000000 0.5
请描述给出一个错误,您正在按“key4”分组,其中包含作为元素的列表,首先,这对熊猫来说有点奇怪,其次,您希望得到什么样的输出。当我运行您的代码时,它会生成一个空df,可能是因为它不能按该列进行groupby。此外,按包含不能散列的值的列进行groupby也有点毫无意义,这对于groupby对象上的操作是必需的。如果您不是将元组列为值,而是将元组作为值,那么它将与元组一起工作。谢谢