【发布时间】:2016-08-04 23:17:16
【问题描述】:
将以下数据框复制到剪贴板:
textId score textInfo
0 name1 1.0 text_stuff
1 name1 2.0 different_text_stuff
2 name1 2.0 text_stuff
3 name2 1.0 different_text_stuff
4 name2 1.3 different_text_stuff
5 name2 2.0 still_different_text
6 name2 1.0 yoko ono
7 name2 3.0 I lika da Gweneth
8 name3 1.0 Always a tradeoff
9 name3 3.0 What?!
现在使用
import pandas as pd
df=pd.read_clipboard(sep='\s\s+')
将其加载到您的环境中。如果该textId 的score 组至少包含一个等于1.0、2.0 和3.0?在这里,所需操作的结果将排除 textId 行 name1,因为它的 score 组缺少 3.0,并排除 name3,因为它的 score 组缺少 2.0 :
textId score textInfo
0 name2 1.0 different_text_stuff
1 name2 1.3 different_text_stuff
2 name2 2.0 still_different_text
3 name2 1.0 yoko ono
4 name2 3.0 I lika da Gweneth
尝试
-
df[df.textId == "textIdRowName" & df.score == 1.0 & df.score == 2.0 & & df.score == 3.0]不正确,因为条件不起作用 在textId组上,但只有单独的行。如果这可能是 重写以匹配textId组然后可以放置 在 for 循环中并提供唯一的 textIdRowName。这样的功能 将收集一系列textId的名称(比如textIdThatMatchScore123) 然后可以用来对原始 df 进行切片 喜欢df[df.textId.isin(textIdThatMatchScore123)]。 -
groupby失败。
【问题讨论】:
标签: python pandas group-by conditional