Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 聚合方法与lambda函数_Python_Pandas - Fatal编程技术网

Python 聚合方法与lambda函数

Python 聚合方法与lambda函数,python,pandas,Python,Pandas,我有一个数据帧df,希望获得每个类的ID列表: import pandas as pd list1 = [[1, ('A', 'B', 'C')], [2, ('M', 'E', 'F')], [3, ('H', 'A', 'D')], [4, ('H', 'A', 'D')]] df = pd.DataFrame(list1, columns=['ID', 'Class']) df看起来像 ID Class 1 (A, B, C) 2 (M, E, F) 3

我有一个数据帧
df
,希望获得每个类的
ID
列表:

import pandas as pd
list1 = [[1, ('A', 'B', 'C')], [2, ('M', 'E', 'F')], [3, ('H', 'A', 'D')], [4, ('H', 'A', 'D')]]    
df = pd.DataFrame(list1, columns=['ID', 'Class'])
df
看起来像

ID    Class
1     (A, B, C) 
2     (M, E, F) 
3     (H, A, D) 
4     (H, A, D)
所需输出为:

Class        ID 
(A, B, C)    [1]
(M, E, F)    [2] 
(H, A, D)    [3, 4] 
我试图使用下面的代码,但它不起作用。谢谢

df.groupby('Class')['ID'].aggregate(lambda x: list(x))
你应该使用

df.groupby('Class').ID.agg(list).reset_index()
Out[473]: 
       Class      ID
0  (A, B, C)     [1]
1  (H, A, D)  [3, 4]
2  (M, E, F)     [2]
修复你的代码

df.groupby('Class')['ID'].aggregate(lambda x: x.tolist())
你应该使用

df.groupby('Class').ID.agg(list).reset_index()
Out[473]: 
       Class      ID
0  (A, B, C)     [1]
1  (H, A, D)  [3, 4]
2  (M, E, F)     [2]
修复你的代码

df.groupby('Class')['ID'].aggregate(lambda x: x.tolist())

这里有很多解决方案,其中一个:

df = df.groupby('Class')['ID'].apply(list).reset_index()

       Class      ID
0  (A, B, C)     [1]
1  (H, A, D)  [3, 4]
2  (M, E, F)     [2]

这里有很多解决方案,其中一个:

df = df.groupby('Class')['ID'].apply(list).reset_index()

       Class      ID
0  (A, B, C)     [1]
1  (H, A, D)  [3, 4]
2  (M, E, F)     [2]

lambda x:list(x)
相当于
list
,但运行时开销更大。
lambda x:list(x)
相当于
list
,但运行时开销更大。嗨,Wenben,我收到一些错误消息。当我运行df.groupby('Class').ID.agg(list).reset_index()时,它会说TypeError:'type'对象不可编辑。当我运行df.groupby('Class')['ID'].aggregate(lambda x:x.tolist())时,它会说ValueError:名称的长度必须匹配多索引中的级别数。@SteveP确保这是元组还是列表?在列类Hi Wen Ben中,列类如(A,B,C)是元组。@SteveP如果它与您向我们显示的相同,我的查询应该可以工作Hi Wen Ben,我收到一些错误消息。当我运行df.groupby('Class').ID.agg(list).reset_index()时,它会说TypeError:'type'对象不可编辑。当我运行df.groupby('Class')['ID'].aggregate(lambda x:x.tolist())时,它会说ValueError:名称的长度必须匹配多索引中的级别数。@SteveP确保这是元组还是列表?列类Hi Wen Ben,列类如(A,B,C)是一个元组。@SteveP如果它与您向我们展示的相同,我的查询应该可以工作