如何根据同一数据帧的列中的唯一值列表对数据帧进行子集化?

问题描述 投票:0回答:2

我有一个简单的数据框,看起来像这样。我希望能够选择LOC是纽约的所有行,将此数据框作为子集并将其标记为变量,我可以使用该变量将纽约行附加到我使用win32创建的联系人电子邮件中。然后移动到波士顿并做同样的事情,等等。我无法弄清楚如何在没有明确命名的情况下提取LOC行。我希望随着LOC值的变化,这是动态的。

    Contact          LOC     ...     Add_Move  First Name
0   [email protected]     New York     ...          Add         Joe
1   [email protected]     New York     ...         Move        Stan
2   [email protected]     New York     ...          Add        Rick
3   [email protected]     New York     ...          Add        Mike
4   [email protected]       Boston     ...          Add       Sonya
5   [email protected]       Boston     ...         Move        Matt
6   [email protected]       Boston     ...         Move       Randy
7   [email protected]       Boston     ...          Add         Sue
8    [email protected]  Los Angeles     ...          Add        Jill
9    [email protected]  Los Angeles     ...         Move       Steve
10   [email protected]  Los Angeles     ...          Add        Bill
python loops dataframe filter
2个回答
0
投票

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

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

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

地点将返回一组{“纽约”,“波士顿”,...}

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

for循环将遍历创建的值集。要根据列值过滤数据,我们可以根据==,!=,...等运算符创建一个掩码。


0
投票

你可以使用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'])
© www.soinside.com 2019 - 2024. All rights reserved.