我有一个这样的数据框
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()
但是它给出了一个错误。
我的目的是在key4中创建具有相似值的组
答案 0 :(得分:1)
您不能通过任何包含不可用类型的列进行groupby,列表就是其中之一,例如,如果您df.groupby('key4').head()
生成了错误:
TypeError:不可用类型:'list'
如果您将元组作为数据,那么您可以对该列进行分组,您可以通过执行以下操作进行转换:
在[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)
然后,您可以将该列调用describe
分组:
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
答案 1 :(得分:0)
您可以先将该列转换为字符串,然后对其进行描述:
df.groupby(df.key4.astype(str)).describe()