pandas - 如何只聚合一列 pandas python 2.7
问题描述
我尝试像这样基于一列“col1”进行聚合,并与其他列保持相同的值:
df_input
col1 col2 col3 col4
0 ID1 DE 69 min-8
1 ID1 DZ 69 min-8
2 ID3 DA 54 min-15
3 ID3 AC 54 min-15
4 ID3 RC 54 min-15
5 ID8 UC 2 min-40
6 ID8 TC 2 min-40
7 ID8 VC 2 min-40
8 ID8 WC 2 min-40
9 ID7 XC 4 min-7
df_output
col1 col2 col3 col4
0 ID1 DE,DZ 69 min-8
1 ID3 DA,AC,RC 54 min-15
2 ID8 UC,TC,VC,WC 2 min-40
3 ID7 XC 4 min-7
解决方案
让我们尝试破解下面的代码。
- 首先,按col1对数据框进行分组,然后
.agg
对分组的对象执行。 - 然后我们将在col2
lambda
上使用一个函数来获取它的所有元素list
- 让我们使用参数
'first'
来表明我们只想保留col3和col4的第一个元素 - 然后,重置索引。
agg_df = (df.groupby('col1')
.agg({'col2': lambda x: x.tolist(),'col3':'first','col4':'first'})
.reset_index())
print(agg_df)
col1 col2 col3 col4
0 ID1 [DE, DZ] 69 min-8
1 ID3 [DA, AC, RC] 54 min-15
2 ID7 [XC] 4 min-7
3 ID8 [UC, TC, VC, WC] 2 min-40
然后将col2从存储在 a 中的值转换list
为适当的string
,我们可以join
使用 a 来转换它的元素,
:
agg_df['col2'].apply(lambda x: ','.join(str(i) for i in x))
Out[16]:
0 DE,DZ
1 DA,AC,RC
2 XC
3 UC,TC,VC,WC
Name: col2, dtype: object
推荐阅读
- excel - 输入文本时如何在 Excel 中创建自动组合 URL?
- java - mono.zip 功能未按预期工作
- html - 两个不同图像的动画和变化
- matlab - 在相同的轴上绘制两个数据集,但沿 x 轴偏移
- applescript - 我希望 Applescript 同时执行两个命令
- spring-cloud - GATEWAY_REQUEST_URL_ATTR 和请求 URI 之间的区别
- javascript - Materializecss Datepicker 点击它时将页面滚动到顶部
- delphi - Delphi ISAPI DLL 子文件夹的物理路径错误
- sql - 为什么插入语句在试图插入 json 的 postgres 中不起作用?
- c++ - 循环中数组的行为