我有一个数据帧:
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'],
'C' : np.asarray([1,2,3,4,5,6,7,8])
'D' : np.asarray([2,3,4,5,6,7,8,9])})
A C D
0 foo 1 2
1 bar 2 3
2 foo 3 4
3 bar 4 5
4 foo 5 6
5 bar 6 7
6 foo 7 8
7 foo 8 9
我想要的是
A C D
0 foo [1,3,5,7,8] [2,4,6,8,9]
1 bar [2,4,6] [3,5,7]
我自己也写了一些东西,但不管用。它给了我原始的数据帧:
def my_func(df):
df.apply(lambda x: list(x.values), axis=0)
return df
df = df.groupby(['A']).apply(my_func)
print df
如何实现所需的功能?你知道吗
这样就可以了,使用
.agg()
:我认为
df.groupby('A').C.agg(list)
也应该起作用。但显然不会如果您想使用
apply
,可以这样做,但会丢失列名:将结果转换为
Series
是关键的,否则您将得到:一个简单的方法是
其中
a
现在看起来像你可以通过
相关问题 更多 >
编程相关推荐