python pandas如何将pandas与相同的列值组合在一起

python pandas如何将pandas与相同的列值组合在一起,python,python-2.7,pandas,Python,Python 2.7,Pandas,转换此帧: 1, 2 ---- a, g a, a a, j d, b c, e 进入: 我能做什么,我能使用groupby吗?还有什么其他方法?可能有更好的方法,但其中一种方法可以是: import pandas as pd import re # df = pd.read_clipboard() df2 = df.copy() df2.columns=['col1','col2'] df2=df2.groupby('col1',as_index=False).sum() df2.col2

转换此帧:

1, 2
----
a, g
a, a
a, j
d, b
c, e
进入:


我能做什么,我能使用groupby吗?还有什么其他方法?

可能有更好的方法,但其中一种方法可以是:

import pandas as pd
import re

# df = pd.read_clipboard()
df2 = df.copy()
df2.columns=['col1','col2']
df2=df2.groupby('col1',as_index=False).sum()
df2.col2 = df2.col2.apply(lambda x: re.sub(r'(.)',r'\1,', x) if len(x)>1 else x)
df2
输出:

您可以使用
应用
功能
加入

df.columns = list('AB')
print (df)
   A  B
0  a  g
1  a  a
2  a  j
3  d  b
4  c  e

df = df.groupby('A')['B'].apply(','.join).reset_index()
print (df)
   A      B
0  a  g,a,j
1  c      e
2  d      b

pivot\u表

df.pivot_table('B', 'A', aggfunc=','.join)

A
a    g,a,j
c        e
d        b
Name: B, dtype: object

如果希望将g、a、j保留为python列表,则可以使用apply-to函数,该函数根据元素的数量返回列表或标量:

df = pd.DataFrame({'A':list('aaadc'), 'B':list('gajbe')})

df = df.groupby('A')['B'].apply(lambda s: list(s) if len(s)>1 else s.iloc[0]).reset_index()
print (df)
产出:

   A          B
0  a  [g, a, j]
1  c          e
2  d          b

@莱尼检查耶斯雷尔的回答。比我的优雅多了。甚至更好更短:)
   A          B
0  a  [g, a, j]
1  c          e
2  d          b