簡體   English   中英

如何根據同一數據幀的列中的唯一值列表對數據幀進行子集化?

[英]How can I subset a data frame based on a list of unique values in a columns of that same data frame?

我有一個簡單的數據框,看起來像這樣。 我希望能夠選擇LOC是紐約的所有行,將此數據框作為子集並將其標記為變量,我可以使用該變量將紐約行附加到我使用win32創建的聯系人電子郵件中。 然后移動到波士頓並做同樣的事情,等等。我無法弄清楚如何在沒有明確命名的情況下提取LOC行。 我希望隨着LOC值的變化,這是動態的。

    Contact          LOC     ...     Add_Move  First Name
0   mike@osjloc1.com     New York     ...          Add         Joe
1   mike@osjloc1.com     New York     ...         Move        Stan
2   mike@osjloc1.com     New York     ...          Add        Rick
3   mike@osjloc1.com     New York     ...          Add        Mike
4   jeff@osjloc2.com       Boston     ...          Add       Sonya
5   jeff@osjloc2.com       Boston     ...         Move        Matt
6   jeff@osjloc2.com       Boston     ...         Move       Randy
7   jeff@osjloc2.com       Boston     ...          Add         Sue
8    dave@osjloc.com  Los Angeles     ...          Add        Jill
9    dave@osjloc.com  Los Angeles     ...         Move       Steve
10   dave@osjloc.com  Los Angeles     ...          Add        Bill

布爾索引。 您可以根據列值屏蔽數據框中的列https://www.geeksforgeeks.org/boolean-indexing-in-pandas/

獲取DataFrame中的所有唯一位置。

locations = set(df.loc[:,"LOC"])

地點將返回一組{“紐約”,“波士頓”,...}

for location in locations:
    variable = df[df["LOC"]==location]

for循環將遍歷創建的值集。 要根據列值過濾數據,我們可以根據==,!=,...等運算符創建一個掩碼。

你可以使用pandas groupby

groups = yourdataframe.groupby('LOC')

groups包含根據'LOC'列拆分的數據框子集。 如果你迭代它,每次迭代你有一個2長度的元組。 廣告索引0,對應於'LOC'的值的字符串,在索引1處,對應於子集(仍然是數據幀)的數據幀。

for locname, subset in groups:
    #do whatever you want with the subset

不確定您需要做什么,但是例如,要打印電子郵件列表,您可以:

for locname, subset in groups:
    print(subset['Contact'])

暫無
暫無

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

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