繁体   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