Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 pandas groupby:使用元组索引聚合列表_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python pandas groupby:使用元组索引聚合列表

Python pandas groupby:使用元组索引聚合列表,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,这个问题与所问的问题类似,但有一个元组索引。 对列表列进行分组可以很好地用于单个索引: mydata=[{'idx':'A','list_str':['hi','babe']}, {'idx':'A','list_str':['TACK','A','walk']}, {'idx':'A','list_str':[]}, {'idx':'B','list_str':['on','the','wild','side']}] df=pd.DataFrame(mydata) grouped=df.gro

这个问题与所问的问题类似,但有一个元组索引。 对列表列进行分组可以很好地用于单个索引:

mydata=[{'idx':'A','list_str':['hi','babe']},
{'idx':'A','list_str':['TACK','A','walk']},
{'idx':'A','list_str':[]},
{'idx':'B','list_str':['on','the','wild','side']}]
df=pd.DataFrame(mydata)
grouped=df.groupby('idx')
打印(grouped.agg({'list_str':lambda x:tuple(x)}))
根据预期产出:

idx     list_str
A       [hi, babe, take, a, walk]
B       [on, the, wild, side]
但是,添加第二个索引不再有效:

mydata=[{'idx':'A','idx2':'B','list_str':['hi','babe']},
{'idx':'A','idx2':'B','list_str':['TACK','A','walk']},
{'idx':'A','idx2':'B','list_str':[]},
{'idx':'B','idx2':'C','list_str':['on','the','wild','side']}]
df=pd.DataFrame(mydata)
grouped=df.groupby(('idx','idx2'))
打印(grouped.agg({'list_str':sum}))
给出一个
值错误
函数不减少


正确的方法是什么?

要按多列分组,请使用列表:

grouped = df.groupby(['idx', 'idx2'])
print(grouped.agg({'list_str': sum}))
可能你以为你在做:

df['new_index'] = df.apply(lambda row: (row['idx'],row['idx2']), axis=1)
df.set_index('new_index',inplace=True)

grouped = df.groupby(df.index)
print(grouped.agg({'list_str': sum}))

你试过密码了吗?这实际上给出了相同的错误。我确实尝试过,使用了您提供的输入。您是否在groupby调用中使用了列表
[]
而不是元组
()
?或者您的输入数据是否构造错误,因为它有两个单独的索引而不是元组的单个索引?使用相同的“mydata”变量,并且
df=pd.DataFrame(mydata);分组=df.groupby(['idx','idx2']);print(grouped.agg({'list_str':sum}))
使用pandas版本0.19.2给出了相同的错误。