将列中的值转换为单行Python

时间:2017-10-17 13:52:33

标签: python aggregate pandas-groupby

我有一个像这样的pandas数据框:

Area1  Area2 
  1      2      
  1      4
  1      5
  1      9
  2      8
  2      16
  2      4
  2      1
  3      8
  3      9

如何转换'Area2'列,使其成为每个'Area1'列的值列表

所以我想要的输出是:

Area1     Area2 
  1      2, 4, 5, 9     
  2      8, 16, 4, 1
  3      8, 9

我之前在R中做过这个:

df %>% group_by(Area1) %>% summarise(Area2= toString(sort(unique(Area2)))) 

我一直在尝试使用groupby()和agg(),但没有成功。

有人解释一下我使用df.groupby('Area1')对数据进行分组后可以使用的内容

非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

您可以分组并应用列表

import pandas as pd
df=pd.read_csv("test.csv")
df.groupby('Area1')['Area2'].apply(list)

答案 1 :(得分:1)

R片段进行字符串连接。

以下行保留原始类型Area2

import pandas as pd

df.groupby('Area1').Area2.apply(pd.Series.tolist).reset_index()