如何在应用 groupby 后获取 Dataframe,并且不应在 python 中的列表或字符串中
How to get Dataframe after applying groupby and should not be in list or string in python
Phone_no Date Problem
1 2020-01-19 G
1 2020-01-19 A
1 2020-01-27 B
1 2020-01-28 C
1 2020-01-28 H
2 2020-01-19 T
3 2020-01-04 U
3 2020-01-22 P
4 2020-01-12 E
5 2020-01-01 G
5 2020-01-11 A
2 2020-01-31 I
2 2020-01-31 E
**我想在 Phone_no 上应用 groupby,日期和想要的数据应该在数据框中,如下所述 **
Phone_no Date Problem
1 2020-01-19 G,A
1 2020-01-27 B
1 2020-01-28 C,H
2 2020-01-19 T
2 2020-01-31 I,E
3 2020-01-04 U
3 2020-01-22 P
4 2020-01-12 E
5 2020-01-01 G
5 2020-01-11 A
您可以 groupby
“Phone_no”和“日期”并使用 agg
应用 lambda 函数,每个组中的 join
s“问题”值:
out = df.groupby(['Phone_no','Date'])['Problem'].agg(lambda x: ','.join(x)).reset_index()
或更简单的方式(感谢@Corralien):
out = df.groupby(['Phone_no','Date'], as_index=False)['Problem'].apply(','.join)
如果你想要元组:
out = df.groupby(['Phone_no','Date'])['Problem'].apply(tuple).reset_index()
输出:
Phone_no Date Problem
0 1 2020-01-19 G,A
1 1 2020-01-27 B
2 1 2020-01-28 C,H
3 2 2020-01-19 T
4 2 2020-01-31 I,E
5 3 2020-01-04 U
6 3 2020-01-22 P
7 4 2020-01-12 E
8 5 2020-01-01 G
9 5 2020-01-11 A
Phone_no Date Problem
1 2020-01-19 G
1 2020-01-19 A
1 2020-01-27 B
1 2020-01-28 C
1 2020-01-28 H
2 2020-01-19 T
3 2020-01-04 U
3 2020-01-22 P
4 2020-01-12 E
5 2020-01-01 G
5 2020-01-11 A
2 2020-01-31 I
2 2020-01-31 E
**我想在 Phone_no 上应用 groupby,日期和想要的数据应该在数据框中,如下所述 **
Phone_no Date Problem
1 2020-01-19 G,A
1 2020-01-27 B
1 2020-01-28 C,H
2 2020-01-19 T
2 2020-01-31 I,E
3 2020-01-04 U
3 2020-01-22 P
4 2020-01-12 E
5 2020-01-01 G
5 2020-01-11 A
您可以 groupby
“Phone_no”和“日期”并使用 agg
应用 lambda 函数,每个组中的 join
s“问题”值:
out = df.groupby(['Phone_no','Date'])['Problem'].agg(lambda x: ','.join(x)).reset_index()
或更简单的方式(感谢@Corralien):
out = df.groupby(['Phone_no','Date'], as_index=False)['Problem'].apply(','.join)
如果你想要元组:
out = df.groupby(['Phone_no','Date'])['Problem'].apply(tuple).reset_index()
输出:
Phone_no Date Problem
0 1 2020-01-19 G,A
1 1 2020-01-27 B
2 1 2020-01-28 C,H
3 2 2020-01-19 T
4 2 2020-01-31 I,E
5 3 2020-01-04 U
6 3 2020-01-22 P
7 4 2020-01-12 E
8 5 2020-01-01 G
9 5 2020-01-11 A