Excel 在多列中按值定位行
这是我的数据帧(df): 我想迭代我的行,如果我在某处看到“999”值(id除外):Excel 在多列中按值定位行,excel,pandas,dataframe,rows,Excel,Pandas,Dataframe,Rows,这是我的数据帧(df): 我想迭代我的行,如果我在某处看到“999”值(id除外): 我需要确保整行都是“999” 我需要确保具有相同id值的第二行也包含“999” 例如,对于id=5,我有一行中有999,而id=5的第二行中没有999 预期产出: 这就是我所拥有的: num_of_p = len(df.columns) - 1 for v in df.index: if (sum(df.iloc[v] == 999) != num_of_p): if (sum(df
num_of_p = len(df.columns) - 1
for v in df.index:
if (sum(df.iloc[v] == 999) != num_of_p):
if (sum(df.iloc[v] == 999) != 0):
raise Exception("***** value 999 should apply to the entire row -please check and re-run*****")
这个代码适用于我的第一个条件。
我想不出第二个。
任何帮助都将不胜感激 您可以使用布尔索引:
m=df.loc[:,“p1”:].apply(λx:999 in x.values,轴=1)
df.loc[df[“id”].isin(df.loc[m,“id”]),“p1”:=999
打印(df)
印刷品:
id p1 p2 p3 p4
0 2 0 0 0 0
1 2 1 1 1 1
2 4 999 999 999 999
3 4 999 999 999 999
4 5 999 999 999 999
5 5 999 999 999 999
6 9 1 1 1 1
7 9 0 0 0 0
编辑:获取包含999的单个“行”(假设始终存在双胞胎):
m=df.loc[:,“p1”:].apply(λx:999 in x.values,轴=1)
x=df.loc[m,“id”].值_计数()
打印('包含999且为“单个”的行:')
打印(x[x==1].index.values)
印刷品:
包含999且为“单个”的行:
[5]
您的预期输出是什么?只有一行有全部999@Erfan我更新了预期输出。如果有一行甚至只有一个“999”,那么它应该都是“999”,第二行也应该有相同的id号。谢谢。为了不改变表格,你会写什么?我只是想知道这些条件是否成立。@HavingNoHead你想知道哪一行有999吗?掩码m
在这些行上包含True
。我已经设法确定一行中是否有999,而不是整行。我现在需要的是知道一行是否有999,而她的“双胞胎”行(相同的id号)是否没有..@HavingNoHead我已经更新了我的答案。知道了,你最好了。