python - 有条件地从 pandas 数据框中选择值

标签 python pandas dataframe pandas-groupby

我有一个数据框,我想在其中确定参加我的“大年”的每个人看到了多少种独特的鸟类。

我尝试使用列表理解和 for 循环来迭代每一行,并使用 .is_unique() 确定它是否是唯一的,但这似乎是我大部分痛苦的根源。我可以使用 .unique() 获得所有独特物种的列表,这非常好,但我想以某种方式获得与这些鸟类相关的人。

df = pd.DataFrame({'Species':['woodpecker', 'woodpecker', 'dove', 'mockingbird'], 'Birder':['Steve', 'Ben','Ben','Greg']})

ben_unique_bird = [x for x in range(len(df['Species'])) if df['Birder'][x]=='Ben' and df['Species'][x].is_unique()]

编辑:我想我对此不清楚 - 我想获得一份每个人都看到但其他人没有看到的鸟类列表。因此,无论格式如何,输出都会类似于 (Steve, 0)、(Ben, 1)、(Greg, 1)。

谢谢!

最佳答案

这可以通过列表理解很容易地完成。

df = pd.DataFrame({'Species':['woodpecker', 'woodpecker', 'dove', 'mockingbird'], 'Birder':['Steve', 'Ben','Ben','Greg']})

matches = [(row[1], row[2]) for row in df.itertuples() if (row[1],row[2]) not in matches]

这给出了一个元组列表作为输出:

[('Steve', 'woodpecker'), ('Ben', 'woodpecker'), ('Ben', 'dove'), ('Greg', 'mockingbird')]

关于python - 有条件地从 pandas 数据框中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865685/

相关文章:

python - 使用千位分隔符格式化多个数据框列

python - 在 Pandas DataFrame 中创建多列的所有可能组合

python - 使用 pandas python reshape 为二进制变量

python - 如何在python中将列表列表转换为数据框

python - 如何获取两个数据框列之间的交集项?

python - 列中值的 Pandas 数据框第一个实例

python - Pandas 有条件地合并具有重复 ID 的行,适用于 CSV

python - 按行计算非 na 值并将总计保存到 pandas 中的新变量

python - 如何使用具有相同类名的scrapy抓取内容

python - 通过 pandas 中的数据框描绘两次