我有一个数据帧df,有两列,我想组合一列并加入列表属于同一组,例如:
column_a, column_b 1, [1,2,3] 1, [2,5] 2, [5,6]
过程结束后:
column_a, column_b 1, [1,2,3,2,5] 2, [5,6]
我想保留所有重复项.我有以下问题:
数据帧的dtypes是对象.convert_objects()不会自动将column_b转换为列表.我怎样才能做到这一点?
df.groupby(...).apply(lambda x:...)中的函数适用于什么?x的形式是什么?清单?
解决我的主要问题?
提前致谢.
object
dtype是一个全能型dtype,基本上不是指int,float,bool,datetime或timedelta.所以它将它们存储为列表.convert_objects
尝试将列转换为其中一个dtypes.
你要
In [63]: df Out[63]: a b c 0 1 [1, 2, 3] foo 1 1 [2, 5] bar 2 2 [5, 6] baz In [64]: df.groupby('a').agg({'b': 'sum', 'c': lambda x: ' '.join(x)}) Out[64]: c b a 1 foo bar [1, 2, 3, 2, 5] 2 baz [5, 6]
这会按列中的值对数据框进行分组a
.阅读更多关于[groupby]的信息.(http://pandas.pydata.org/pandas-docs/stable/groupby.html).
这是一个常规列表sum
(连接)就像[1, 2, 3] + [2, 5]
df.groupby('column_a').agg(sum)
这是因为运算符重载sum
将列表连接在一起.得到的df的索引将是以下值column_a
: