gpt4 book ai didi

python - groupby、apply 和 set 没有按预期运行……这是一个错误吗?

转载 作者:太空狗 更新时间:2023-10-30 02:31:04 25 4
gpt4 key购买 nike

要查看问题,请考虑以下数据框

In [66]: dat = pandas.DataFrame(['a','b','c','d','e','f','g','h'],
columns=['letters'])

In [67]: dat['numbers'] = pandas.Series([1,2,3,4,5,6,7,8])

In [68]: dat['names'] = pandas.Series(['jim','jan','jerry','george'
,'mary','mary','sue','sue'])

In [69]: dat
Out[69]:
letters numbers names
0 a 1 jim
1 b 2 jan
2 c 3 jerry
3 d 4 george
4 e 5 mary
5 f 6 mary
6 g 7 sue
7 h 8 sue

按名称分组

In [78]: dat = dat.groupby(['names'])[['letters']]

现在我尝试连接字母会产生一个有趣的结果:

In [80]: dat.apply(lambda x: '|'.join(set(x)))
Out[80]:
names
george letters|numbers|names
jan letters|numbers|names
jerry letters|numbers|names
jim letters|numbers|names
mary letters|numbers|names
sue letters|numbers|names
dtype: object

以下 hack 似乎有效,但为什么我需要再次选择“字母”,为什么上面的输出看起来像它一样?

In [84]: dat.apply(lambda x: '|'.join(set(x['letters'])))
Out[84]:
names
george d
jan b
jerry c
jim a
mary e|f
sue h|g
dtype: object

这可能是一个错误吗?

已安装的版本

提交:无 python :2.7.5.final.0 python 位:64操作系统: Darwin 操作系统版本:13.1.0机器:x86_64处理器:i386字节顺序:小LC_ALL:无语言:en_US.UTF-8

Pandas :0.13.1赛通:0.20.1 NumPy 的:1.6.2科学:0.11.0统计模型:0.5.0IPython:2.0.0狮身人面像:1.2.2帕齐:0.2.1scikits.timeseries:无日期实用程序:1.5皮茨:2012d瓶颈:无表:无数字表达式:无matplotlib:1.1.1openpyxl:无xlrd:无xlwt:无xlsxwriter:无sqlalchemy:无lxml:3.3.5bs4:4.3.2html5lib:无bq:无apiclient:无

最佳答案

这可能看起来有点奇怪,但正如您所见,DataFrame 的集合是它的列:

In [11]: dat
Out[11]:
letters numbers names
0 a 1 jim
1 b 2 jan
2 c 3 jerry
3 d 4 george
4 e 5 mary
5 f 6 mary
6 g 7 sue
7 h 8 sue

[8 rows x 3 columns]

In [12]: set(dat)
Out[12]: {'letters', 'names', 'numbers'}

这是由于您循环访问 DataFrame 的方式(按列)​​:

In [13]: for i in dat: print(i)
letters
numbers
names

这将适用于 SeriesGroupBy(遍历 Series 遍历其元素):

In [21]: g = dat.groupby(['names'])['letters']

In [22]: g.apply(lambda x: '|'.join(set(x)))
Out[22]:
names
george d
jan b
jerry c
jim a
mary e|f
sue h|g
dtype: object

注意:您不需要集合,甚至不需要 lambda:

In [23]: g.apply('|'.join)
Out[23]:
names
george d
jan b
jerry c
jim a
mary e|f
sue g|h
dtype: object

关于python - groupby、apply 和 set 没有按预期运行……这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com