【发布时间】:2021-12-26 14:01:50
【问题描述】:
我有以下dataframe
column1 column2
0 Paul xx
1 John aa
2 Paul gg
3 John xx
4 John bb
5 George gg
6 Paul gg
7 john xx
.
n Jonathan ff
我想将每个人的信息排成一行。在同一个row 上,我想要index,但在另一个column 上。所以我想要一个像这样的dataframe:
column1 column2 column3
0 Paul 0,2,6 xx, gg, gg
1 John 1,3,4,7 aa, xx, bb, xx
5 George 5 gg
.
.
.
n Jonathan n ff
为了让上面的dataframe我执行
df2 = df.reset_index().groupby('column1').agg(list).reset_index()
ix = pd.Index(df2['index'].str.get(0)).rename(None)
df3 = df2.set_index(ix).sort_index()
df3
返回:
column1 index column2
0 Paul [0, 2, 6] [xx, gg, gg]
1 John [1, 3, 4, 7] [aa, xx, bb,xx]
5 George [5] [gg]
之后,我删除了column1 和index。
要将column2 的值以不表示为list 的格式显示,我执行:
def transform_list(df3):
df3['column2'] = df3['column2'].apply(lambda x: ','.join(x))
return df3
dfb=transform_list(df3)
df3.head()
返回:
column2
0 xx, gg, gg
1 aa, xx, bb,xx
5 gg
所以现在我想要的是拥有每个 row 的唯一值
所以我的最终dataframe 将是
column2
0 xx, gg
1 aa, xx, bb
5 gg
有什么想法吗?
【问题讨论】:
-
','.join(set(x))?
标签: python python-3.x dataframe