bri*_*ler 10 python numpy pandas
Dataframe:
one two
a 1 x
b 1 y
c 2 y
d 2 z
e 3 z
grp = DataFrame.groupby('one')
grp.agg(lambda x: ???) #or equivalent function
Run Code Online (Sandbox Code Playgroud)
来自grp.agg的所需输出:
one two
1 x|y
2 y|z
3 z
Run Code Online (Sandbox Code Playgroud)
在集成数据帧之前我的agg函数是"|".join(sorted(set(x))).理想情况下,我希望组中有任意数量的列,并且agg返回"|".join(sorted(set())每个列项,如上面的两个.我也试过了np.char.join().
爱熊猫,它带我从一个800线复杂的程序到一个400线的步行放大公园.谢谢 :)
Zel*_*ny7 12
你太近了:
In [1]: df.groupby('one').agg(lambda x: "|".join(x.tolist()))
Out[1]:
two
one
1 x|y
2 y|z
3 z
Run Code Online (Sandbox Code Playgroud)
处理排序的扩展答案仅采用集合:
In [1]: df = DataFrame({'one':[1,1,2,2,3], 'two':list('xyyzz'), 'three':list('eecba')}, index=list('abcde'), columns=['one','two','three'])
In [2]: df
Out[2]:
one two three
a 1 x e
b 1 y e
c 2 y c
d 2 z b
e 3 z a
In [3]: df.groupby('one').agg(lambda x: "|".join(x.order().unique().tolist()))
Out[3]:
two three
one
1 x|y e
2 y|z b|c
3 z a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8064 次 |
| 最近记录: |