for a, b in itertools.combinations(number_of_notes_cols, 2):
weekly_meetings_difference = all_meetings_data[(all_meetings_data[a] != all_meetings_data[b]) == True]
上面的代码用于工作:它将返回所有columns_meetings_difference列的列组合的所有行,其中列值(如果对于任何列对,则为true)。现在,返回weekly_meetings_difference会给我一些但不是全部列值更改的行。
使用一些代码进行编辑:
之前(当一切似乎工作正常时):
Number of Notes 03112016 Number of Notes 03192016 Number of Notes 03272016 Number of Notes 04042016
Meeting Name
X 12.0 NaN NaN NaN
Y 5.0 5.0 NaN NaN
Z 2.0 NaN NaN NaN
W NaN 6.0 713.0 740.0
之后(现在我已经更新了我想要信息的原始数据框):
Number of Notes 03112016 Number of Notes 03192016 Number of Notes 03272016 Number of Notes 04042016 Number of Notes 04122016 Emails 04122016
Meeting Name
A 37.0 37.0 38.0 38.0 37.0
X 12.0 NaN NaN NaN NaN NaN
Y 5.0 5.0 NaN NaN NaN NaN
Z 2.0 NaN NaN NaN NaN NaN
既然我已经完成了这个编辑,我注意到在将额外的列添加到数据框之后添加了行A以及要删除的行W(它们都应该每次都显示)
答案 0 :(得分:1)
首先,让我确保我理解这个问题。您是否在数据框中查找具有多个唯一值的行?也就是说,该值至少在行中更改一次。
import pandas as pd
df = pd.DataFrame({'a': [1, 1, 1], 'b': [1, 2, 3], 'c': [1, 1, 3]})
a b c
0| 1 1 1
1| 1 2 1
2| 1 3 3
在上面的数据框中,您需要第1行和第2行。如果是这样,我会执行以下操作:
df.apply(pd.Series.nunique, axis=1)
返回数据帧每行中唯一值的数量:
0 1
1 2
2 2
dtype: int64
使用该结果,我们可以选择我们关心的行:
df[df.apply(pd.Series.nunique, axis=1) > 1]
返回预期的内容:
a b c
1| 1 2 1
2| 1 3 3
这是你所追求的,还是别的什么?如果你澄清,很高兴编辑。