基于python中的参数整理数据

时间:2017-12-17 18:15:44

标签: python-2.7

我有以下类型的数据:

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

但这并没有给我想要的结果。它与自身匹配相同的条目,因此结果不正确。

1 个答案:

答案 0 :(得分:0)

根据你的问题,我认为你是python的初学者。所以,我在这里的回答对专业人士来说很无聊。

首先,您需要安装pandas这是一个处理数据集的酷python模块。

其次,您需要自定义数据点并使它们看起来像下面的字典(我将把这部分留给您):

d = {"Col1": ["heyA", "heyB", "heyA", "heyA"], 
     "Col2": [123, 456, 123, 123], 
     "Col3": ["ABC", "VCV", "SDF", "ABC"]}

现在,有趣的部分开始了!

我们将使用pandas模块中的函数,此函数称为group_by()。此函数根据指定的列值对数据进行分组。因此,让我们尝试一下,根据Col1Col2的前两列对我们的数据进行分组:

>>> 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]