使用python,如何从csv中获取唯一的行,但如何获取合并了哪些行(或行中的值)的记录?
我有一个包含11列数据的CSV文件。前10个包含我希望保留唯一行的信息。最后一个包含此信息来源的文件名 我只想从前10行中获得唯一的行,并且有一个列出文件名的新的最后一列,或者有其他带有未标记文件名的列 例如: 可乐 可乐 可乐 可乐 可乐 菲尔曼 A. 1. NA NA NA 文件1 A. 1. NA NA NA 文件2 NA NA B NA NA 文件1 NA NA B NA NA 文件3 NA NA B NA NA 文件4 NA NA NA D 1. 文件3使用python,如何从csv中获取唯一的行,但如何获取合并了哪些行(或行中的值)的记录?,python,pandas,dataframe,loops,csv,Python,Pandas,Dataframe,Loops,Csv,我有一个包含11列数据的CSV文件。前10个包含我希望保留唯一行的信息。最后一个包含此信息来源的文件名 我只想从前10行中获得唯一的行,并且有一个列出文件名的新的最后一列,或者有其他带有未标记文件名的列 例如: 可乐 可乐 可乐 可乐 可乐 菲尔曼 A. 1. NA NA NA 文件1 A. 1. NA NA NA 文件2 NA NA B NA NA 文件1 NA NA B NA NA 文件3 NA NA B NA NA 文件4 NA NA NA D 1. 文件3 您可以基于除文件名以外的所有列
您可以基于除文件名以外的所有列
groupby
,然后使用join
聚合文件名,以创建列,列出其他每一组不同列值的所有文件名:
df.groupby(
df.columns.drop('Filname').to_list(),
dropna=False)['Filname'].apply(', '.join).reset_index()
输出:
Col1 Col2 Col3 Col4 Col10 Filname
0 a 1.0 NaN NaN NaN File1, File2
1 NaN NaN b NaN NaN File1, File3, File4
2 NaN NaN NaN d 1.0 File3
您可以基于除文件名以外的所有列
groupby
,然后使用join
聚合文件名,以创建列,列出其他每一组不同列值的所有文件名:
df.groupby(
df.columns.drop('Filname').to_list(),
dropna=False)['Filname'].apply(', '.join).reset_index()
输出:
Col1 Col2 Col3 Col4 Col10 Filname
0 a 1.0 NaN NaN NaN File1, File2
1 NaN NaN b NaN NaN File1, File3, File4
2 NaN NaN NaN d 1.0 File3
当我预览表格并对其进行管理时,最愚蠢的事情就是显示格式正确的表格。任何关于修复的建议都会很好。干杯,尝试在
之后添加一行,例如:
和转到:
或者更好,以逗号分隔的代码编写csv,这样我们就可以复制和测试您到目前为止尝试了什么?当我预览表格时,愚蠢的事情会显示格式正确的表格,然后对它们进行管理。任何关于修复的建议都会很好。干杯,尝试在之后添加一行额外的代码,例如:
和转到:
或者更好,以逗号分隔的代码编写csv,这样我们就可以复制和测试您到目前为止尝试了什么?太棒了!非常感谢。我想我使用的是熊猫的旧版本,但我不愿意更新,因为团队中的其他人可能正在使用旧版本。我不得不从to_列表中删除“u”,但我无法让“dropna”正常工作(在这个版本的pandas中有bug),所以我将NaN替换为0(值不在数据中)。谢谢你的帮助,包括帮我整理问题。非常优雅的解决方案。干杯,太棒了!非常感谢。我想我使用的是熊猫的旧版本,但我不愿意更新,因为团队中的其他人可能正在使用旧版本。我不得不从to_列表中删除“u”,但我无法让“dropna”正常工作(在这个版本的pandas中有bug),所以我将NaN替换为0(值不在数据中)。谢谢你的帮助,包括帮我整理问题。非常优雅的解决方案。干杯