将 CSV 的唯一第 0 个元素分组为 python 或 hive 中唯一的第 i 个元素

Posted

技术标签:

【中文标题】将 CSV 的唯一第 0 个元素分组为 python 或 hive 中唯一的第 i 个元素【英文标题】:Group unique 0th elements of CSV for unique ith elements in python or hive 【发布时间】:2016-09-27 01:03:44 【问题描述】:

请查看链接中的图片以最好地查看输入和所需的输出格式并阅读下面的说明

我正在寻求采用 3(或 2)列 csv 并创建一个新 csv,其中对于每个唯一的第一个元素(即第二列),所有唯一的第 0 个元素都被分组,因此输出 csv 行的结构是像这样: 唯一的第 1 个元素,唯一的第 0 个元素 #1,唯一的第 0 个元素 #2,...

使用 Python 3.x 或 Python 2.x 或 Hive 或 SQL。非常感谢任何建议。谢谢!

【问题讨论】:

以文本形式提供数据。 【参考方案1】:

你可以这样做:

In [34]: df
Out[34]:
    c1  c2
0    1  p1
1    1  p1
2    1  p2
3    2  p2
4    2  p3
5    3  p3
6    3  p3
7    3  p3
8    3  p4
9    3  p4
10   3  p5

In [36]: (df.groupby('c2')['c1']
   ....:    .apply(lambda x: ','.join(x.unique().astype(str)))
   ....:    .to_frame('unique').to_csv(r'D:/temp/output.csv')
   ....: )

输出.csv:

c2,unique
p1,1
p2,"1,2"
p3,"2,3"
p4,3
p5,3

【讨论】:

谢谢@MaxU !!!排序工作正常。添加的字符存在一个小问题,因为排序后的第 0 个元素使用双引号 (") 输出。这不在我的原始帖子中,我可以在之后修复它,但理想情况下,输出 CSV 不会添加字符。再次感谢。您的代码帮了大忙!

以上是关于将 CSV 的唯一第 0 个元素分组为 python 或 hive 中唯一的第 i 个元素的主要内容,如果未能解决你的问题,请参考以下文章

如何标记和分组数组中的唯一功能

如何对来自 CSV 的唯一 COL2 和 COL3 值的唯一 COL1 值进行分组

如何跳过有效载荷的第一行-常规

Python元组列表将第二个元素与唯一的第一个元素合并

按列分组和排序csv文件spark [duplicate]

MySQL在分组后获得第一个非空值