簡體   English   中英

Pandas 數據框:按某些列分組並從其余列創建列表

[英]Pandas dataframe: group by some columns and create lists from the remaining ones

我的示例數據框包含:

id1 id2 文本 元數據
惠普:001 做:001 文本1 元數據_1
惠普:001 做:001 text_2 元數據_2

我正在嘗試生成一個按id1id2分組的新表,其中textmetadata將包含來自其各自記錄的術語列表:

id1 id2 文本 元數據
惠普:001 做:001 ['text_1','text_2'] ['元數據_1','元數據_2']

我嘗試將 groupby 與 apply 和 reset_index 一起使用,但我得到:

df = pd.DataFrame(data={"id1": ["HP:001", "HP:001"], 
                   "id2": ["DO:001", "DO:001"], 
                   "text": ["text_1", "text_2"], 
                   "metadata": ["metadata_1", "metadata_2"]})

outcome = df.groupby(["id1", "id2"]).apply(list)

結果是:

id1     id2   
HP:001  DO:001    [id1, id2, text, metadata]
dtype: object

我可以使用reset_index將結果解析為數據幀,但我不明白為什么我會得到一個列名列表而不是它們的內容作為結果。

更改適用於agg

outcome = df.groupby(["id1", "id2"]).agg(list)#.reset_index()

outcome
Out[372]: 
                           text                  metadata
id1    id2                                               
HP:001 DO:001  [text_1, text_2]  [metadata_1, metadata_2]

使用df.groupby(["id1", "id2"]).apply(list) ,您可以將其視為df.groupby(["id1", "id2"]).apply(lambda group: list(group))其中group是一個 DataFrame。 list(DataFrame)返回列名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM