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