我有一个数据框,我使用groupby
进行进一步的数据聚合:
import pandas as pd
test_df = pd.DataFrame(data={"id": [1,2,2,3,3], "review_id": [1,2,3,4,5], "text": ["good", "bad", "nice", "awesome", "dont buy"]})
grouped_df = test_df.groupby(by=["id", "review_id"]).apply(lambda x: [x["text"]])
请给我以下系列:
id review_id
1 1 [[good]]
2 2 [[bad]]
3 [[nice]]
3 4 [[awesome]]
5 [[dont buy]]
dtype: object
现在我需要一种方法,如何进一步简化本系列,因为我只希望ID超过1条评论。所以我要删除 id 1 。
我只是不知道如何使用aggregate()
或apply()
来完成这项任务。
我该如何实现?
答案 0 :(得分:1)
让我们做transform
out = grouped_df[grouped_df.groupby(level=0).transform('size')>1]
id review_id
2 2 [[bad]]
3 [[nice]]
3 4 [[awesome]]
5 [[dont buy]]
dtype: object
或者让我们做duplicated
out = grouped_df[grouped_df.index.get_level_values(0).duplicated(keep=False)]
id review_id
2 2 [[bad]]
3 [[nice]]
3 4 [[awesome]]
5 [[dont buy]]
dtype: object