我有以下类型的数据:
Col1 Col2 Col3
heyA 123 ABC
heyB 456 VCV
heyA 123 SDF
heyA 123 ABC
我想整理它们以便
输出应为:
Col1 Col2 Col3
heyA 123 ABC,SDF
heyB 456 VCV
请建议我这样做的方法。非常感谢提前!
我试过了:
for i in Col1:
for k in Col1:
if i==k:
//dosome
else:
//dosomethingelse
但这并没有给我想要的结果。它与自身匹配相同的条目,因此结果不正确。
答案 0 :(得分:0)
根据你的问题,我认为你是python的初学者。所以,我在这里的回答对专业人士来说很无聊。
首先,您需要安装pandas
这是一个处理数据集的酷python模块。
其次,您需要自定义数据点并使它们看起来像下面的字典(我将把这部分留给您):
d = {"Col1": ["heyA", "heyB", "heyA", "heyA"],
"Col2": [123, 456, 123, 123],
"Col3": ["ABC", "VCV", "SDF", "ABC"]}
现在,有趣的部分开始了!
我们将使用pandas
模块中的函数,此函数称为group_by()
。此函数根据指定的列值对数据进行分组。因此,让我们尝试一下,根据Col1
和Col2
的前两列对我们的数据进行分组:
>>> import pandas as pd
>>>
>>> df = pd.DataFrame(d)
>>> grouped = df.groupby( ["Col1", "Col2"] )
>>> grouped
<pandas.core.groupby.DataFrameGroupBy object at 0x000000000AB9A6A0>
>>> grouped.groups
{('heyA', 123L): Int64Index([0, 2, 3], dtype='int64'),
('heyB', 456L): Int64Index([1], dtype='int64')}
如您所见,现在我们有两个小组('heyA', 123L)
和('heyB', 456L)
。
现在,让我们使用groupby
对象并对其应用函数,我们将应用set
转换来删除重复的值。然后,我们将使用函数reset_index()
来重置索引。
>>> grouped['Col3'].apply(set).reset_index()
Col1 Col2 Col3
0 heyA 123 {SDF, ABC}
1 heyB 456 {VCV}
如果您关注{}括号,则可以改为运行以下行:
>>> grouped['Col3'].apply(set).apply(list).reset_index()
Col1 Col2 Col3
0 heyA 123 [SDF, ABC]
1 heyB 456 [VCV]