我有一个表格如下,列名称随时间变化。我只想保留这些行,其中ww与ww12之间存在差异。在下表中,我想保留第3行和第7行并删除其他行。 在第3行ww17#ww12 在第7行ww16#ww12 请帮助我,提前谢谢。
Type WW12 WW13 WW14 WW15 WW16 WW17 WW18 WW19 WW20
0 AA 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143
1 AA 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
2 AA 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143
3 BB 1.457285714 1.457285714 1.457285714 1.457285714 1.457285714 1.863928571 1.863928571 1.863928571 1.863928571
4 BB 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
5 BB 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
6 BB 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143
7 BB 1.863928571 1.863928571 1.863928571 1.863928571 2.878857143 2.878857143 2.878857143 2.878857143 2.878857143
8 BB 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
答案 0 :(得分:2)
#create index by column Type
df1 = df.set_index('Type')
#compare column WW12 for not equal and get at least one True per rows
df2 = df[df1.ne(df1['WW12'], 0).any(1).values]
#if want compare by second column (first is Index here)
#df2 = df[df1.ne(df1.iloc[:, 0], 0).any(1).values]
如果只想比较第二列:
df2 = df[df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0).any(axis=1)]
print (df2)
Type WW12 WW13 WW14 WW15 WW16 WW17 WW18 \
3 BB 1.457286 1.457286 1.457286 1.457286 1.457286 1.863929 1.863929
7 BB 1.863929 1.863929 1.863929 1.863929 2.878857 2.878857 2.878857
WW19 WW20
3 1.863929 1.863929
7 2.878857 2.878857
<强>解释强>:
按位置选择第二列:
print (df.iloc[:, 1])
0 1.999857e+00
1 2.400000e+07
2 1.424593e+03
3 1.457286e+00
4 2.400000e+07
5 2.400000e+07
6 1.424593e+03
7 1.863929e+00
8 2.400000e+07
Name: WW12, dtype: float64
按位置删除第一列并将其与第二列进行比较:
print (df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0))
WW12 WW13 WW14 WW15 WW16 WW17 WW18 WW19 WW20
0 False False False False False False False False False
1 False False False False False False False False False
2 False False False False False False False False False
3 False False False False False True True True True
4 False False False False False False False False False
5 False False False False False False False False False
6 False False False False False False False False False
7 False False False False True True True True True
8 False False False False False False False False False
按any
比较每行至少一个True
:
print (df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0).any(axis=1))
0 False
1 False
2 False
3 True
4 False
5 False
6 False
7 True
8 False
dtype: bool