使用python将csv文件中的多行合并为一行

2024-09-30 10:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多行的csv文件,如下所述

Id  Name  Marks1 Marks2 Marks3 Marks4 Marks5
1   ABC   10     NAN    NAN    NAN    NAN
2   BCD   15     NAN    NAN    NAN    NAN
3   CDE   17     NAN    NAN    NAN    NAN
1   ABC   NAN    18     NAN    17     NAN
2   BCD   NAN    10     NAN    15     NAN
1   ABC   NAN    NAN    16     NAN    NAN
3   CDE   NAN    NAN    19     NAN    NAN

我想使用python中的pandas将具有相同id和名称的行合并到一行中。输出应为:

Id  Name  Marks1 Marks2 Marks3 Marks4 Marks5
1   ABC   10     18     16     17     NAN
2   BCD   15     10     NAN    15     NAN
3   CDE   17     NAN    19     NAN    NAN

Tags: 文件csvnameidpandasnanabccde
2条回答

IIUC,^{}+as_index=False^{}一起消除NaN

#df = df.replace('NAN',np.nan) #If necessary
df.groupby(['Id','Name'],as_index=False).first()

如果您认为它可能有一个具有非空值的pairid名称​​在某些列中,您可以使用^{}^{}^{}+^{}来保存所有信息

df.groupby(['Id','Name']).apply(lambda x: x.ffill().bfill()).drop_duplicates()

输出

   Id Name Marks1 Marks2 Marks3 Marks4  Marks5
0   1  ABC     10     18     16     17     NaN
1   2  BCD     15     10    NaN     15     NaN
2   3  CDE     17    NaN     19    NaN     NaN

粗鲁的回答:

pd.groupby(“Name”).mean().reset_index()

仅当每个列的每个名称只有一个有效值时,此操作才有效

相关问题 更多 >

    热门问题