Dataframe 使用 Pandas 使用冒号、逗号和排序分隔值
Dataframe using Pandas delimiting values using colon, commas and sorting
我有这个数据框:
C0 C1 C2
0 jjj 3
0 aaa 2
1 bbb 7
使用 Pandas 获取这个新 DataFrame 的最 pythonic 方式是什么?
C0 C1
0 aaa:2,jjj:3
1 bbb:7
您可以使用 DataFrame.sort_values
. You can use Series.str.cat
对数据框进行排序,以便与 sep 连接。然后 groupby 并使用 str.join
.
df = df.sort_values('C1')
df["C1"].str.cat(df["C2"].astype(str), ":").groupby(df["C0"]).agg(
",".join
).to_frame().reset_index()
C0 C1
0 0 aaa:2,jjj:3
1 1 bbb:7
我的方法与@Ch3ster 的方法类似,但管道有点不同:
(df.sort_values('C1')
.assign(C1=lambda d: d['C1']+':'+d['C2'].astype(str))
.groupby('C0', as_index=False)['C1'].apply(','.join)
)
输出:
C0 C1
0 0 aaa:2,jjj:3
1 1 bbb:7
我有这个数据框:
C0 C1 C2
0 jjj 3
0 aaa 2
1 bbb 7
使用 Pandas 获取这个新 DataFrame 的最 pythonic 方式是什么?
C0 C1
0 aaa:2,jjj:3
1 bbb:7
您可以使用 DataFrame.sort_values
. You can use Series.str.cat
对数据框进行排序,以便与 sep 连接。然后 groupby 并使用 str.join
.
df = df.sort_values('C1')
df["C1"].str.cat(df["C2"].astype(str), ":").groupby(df["C0"]).agg(
",".join
).to_frame().reset_index()
C0 C1
0 0 aaa:2,jjj:3
1 1 bbb:7
我的方法与@Ch3ster 的方法类似,但管道有点不同:
(df.sort_values('C1')
.assign(C1=lambda d: d['C1']+':'+d['C2'].astype(str))
.groupby('C0', as_index=False)['C1'].apply(','.join)
)
输出:
C0 C1
0 0 aaa:2,jjj:3
1 1 bbb:7