【发布时间】:2014-07-10 18:36:54
【问题描述】:
要查看问题,请考虑以下数据框
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
以下技巧似乎有效,但为什么我需要再次选择“字母”,为什么上面的输出看起来像它一样?
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
这可能是一个错误吗?
安装版本
提交:无 蟒蛇:2.7.5.final.0 蟒蛇位:64 操作系统:达尔文 操作系统版本:13.1.0 机器:x86_64 处理器:i386 字节序:很少 LC_ALL:无 LANG: en_US.UTF-8
熊猫:0.13.1 赛通:0.20.1 麻木:1.6.2 scipy:0.11.0 统计模型:0.5.0 IPython:2.0.0 狮身人面像:1.2.2 帕西:0.2.1 scikits.timeseries:无 日期工具:1.5 皮茨:2012d 瓶颈:无 表:无 numexpr:无 matplotlib:1.1.1 openpyxl:无 xlrd:无 xlwt:无 xlsxwriter:无 sqlalchemy:无 lxml:3.3.5 bs4:4.3.2 html5lib:无 bq:无 apiclient:无
【问题讨论】: