Python 3.x 如何基于多个字段分组并显示所有列
我正在尝试创建一个csv文件,如果有几列是相同的,那么我会将具有类似值的行合并到一行中 例如: 输入:Python 3.x 如何基于多个字段分组并显示所有列,python-3.x,pandas,csv,pandas-groupby,data-analysis,Python 3.x,Pandas,Csv,Pandas Groupby,Data Analysis,我正在尝试创建一个csv文件,如果有几列是相同的,那么我会将具有类似值的行合并到一行中 例如: 输入: Party_No install_date Start_date End_date Product_family Version City state 111 24-05-2018 25-05-2019 21-03-2020 storage 1 LA USA 111 24-05-2018 25-05-2019 21-0
Party_No install_date Start_date End_date Product_family Version City state
111 24-05-2018 25-05-2019 21-03-2020 storage 1 LA USA
111 24-05-2018 25-05-2019 21-03-2020 storage 1 KA USA
111 24-05-2018 25-05-2019 21-03-2020 storage 2 PA UK
输出
Party_No install_date Start_date End_date Product_family Version City state
111 24-05-2018 25-05-2019 21-03-2020 storage 1,2 LA,KA,PA UK,USA
例:就我而言
如果参与方编号、项目安装日期、合同子行日期、合同子行结束日期、实例族
我将把具有相同值的行合并为一行。除上述之外的其他列将具有逗号分隔的值
输入CSV文件
预期输出CSV
我试过的代码:
import pandas as pd
import np
df = None
df = pd.read_csv("Export.csv")
df.fillna(0,inplace=True)
pf=df.groupby(['PARTY_NUMBER','ITEM_INSTALL_DATE','CONTRACT_SUBLINE_START_DATE','CONTRACT_SUBLINE_END_DATE','INSTANCE_PRODUCT_FAMILY']).agg([','.join])
pf.to_csv("result1.csv", index=False)
添加
unqiue
(或在订单不重要时添加set
)
我尝试获取“AttributeError:'DataFrame'对象没有属性'unique'”列,但groupby中指定的列未在最终结果中打印出来output@RITESHSANJAYMAHAJAN不如试试
df.groupby(['…')).agg(lambda x:','.join(set(x))
set解决了重复值问题。但仍然无法看到groupby中提到的列。我得到的是唯一的版本、城市、州栏。。其他列,如party_number、install_date、startdate、End date、product family等不在最终输出中。。。只有“城市”和“州”列得到displayed@RITESHSANJAYMAHAJANdf.groupby(['…')).agg(lambda x:','.join(set(x)).reset_index()
df.groupby(['...']).agg(lambda x : ','.join(x.unique())) # set(x)