簡體   English   中英

根據 pandas 數據幀中的其他索引值對索引值進行分組

[英]Group index values based on other index values in pandas Data Frame

我有一個具有以下結構的數據框


                     Sentence                 Label

A              B   
"unique ID1"   0    "Sample sentence 1"        jt
"unique ID1"   1   "Sample sentence 2"        jt  
"unique ID3"   2   "Sample sentence 3"        edu
"unique ID3"   3   "Sample sentence 4"        edu

我希望能夠獲得按索引A的值分組的索引B的所有值,其中label == jt並對所有唯一的 label 值重復此操作。 首選的返回類型是key-value對,但任何其他適當的格式也可以。

label == jt 的有效示例:

("unique ID1": [0,1] )

label == edu 的有效示例:

("unique ID3": [2,3] )

我已經嘗試了很多SO問題,但還沒有找到我正在尋找的確切內容。

我也試過這個:



sorted_index_df = df.sort_index(inplace = False)

multi_index = sorted_index_df.loc[sorted_index_df["label"] == "jt"].index

這樣做將返回索引A的每個值及其對應的索引B值作為單獨的元組。

例如:( ('Labor_&_Delivery_Nurse-APRN__Lidia_Lambert__', 17)

但我希望能夠通過索引A中的值對索引B的所有值進行分組。

任何幫助表示贊賞。

您可以通過使用 groupby 來實現這一點,如下所示

df = pd.DataFrame([['unique ID1', '0', 'Sample sentence 1', 'jt'], ['unique ID1', '1', 'Sample sentence 2', 'jt'], ['unique ID3', '2', 'Sample sentence 3', 'edu'], ['unique ID3', '3', 'Sample sentence 4', 'edu']], columns=('A', 'B', 'Sentence', 'Label'))
result = df.groupby(["A", "Label"]).agg({"B":list}).reset_index(level=0)

## you can get result for jt like

result.loc["jt"]

嘗試這個:

只得到'jt'

df[df.Label.eq('jt')].reset_index(level=1).groupby(level=0).B.unique()

Out[22]:
A
unique ID1    [0, 1]
Name: B, dtype: object

只獲得'edu'

df[df.Label.eq('edu')].reset_index(level=1).groupby(level=0).B.unique()

Out[23]:
A
unique ID3    [2, 3]
Name: B, dtype: object

為了提供更好的演示,我擴展了一些數據樣本:

                Sentence Label
A   B                         
ID1 0  Sample sentence 1    jt
    1  Sample sentence 2    jt
ID3 2  Sample sentence 3   edu
    3  Sample sentence 4   edu
ID4 4  Sample sentence 5    jt
    5  Sample sentence 6    jt
ID5 6  Sample sentence 7   edu
    7  Sample sentence 8   edu

目的是為每個Label至少有 2 個不同的ID

要計算所有LabelID的結果,運行一條指令就足夠了:

df.reset_index().groupby(['Label', 'A']).B.apply(list)

對於我的數據,結果是:

Label  A  
edu    ID3    [2, 3]
       ID5    [6, 7]
jt     ID1    [0, 1]
       ID4    [4, 5]

暫無
暫無

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

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