【发布时间】:2016-08-31 14:04:37
【问题描述】:
我有一个包含 472 列的数据框。这 99 列中有 dxpoa1、dxpoa2、...、dxpoa99。我想过滤掉 dxpoa 列的值为 7 或 N 或 BLANK 的数据帧行。 dxpoa 可以有许多值,例如 Y、W、E、1、7、N 等。或者它们保持空白。只有那些 dxpoa 只有 7 或 N 的行才应该从数据框中过滤掉。 数据集很大,有数十万行。因此,一种有效的方法将受到赞赏。
a b c dxpoa1 dxpoa2 dxpoa3 dxpoa4
0 0 A X W N X
1 Z W 2 7 7
2 7 W N W W 1 Z
3 1 7 E N N N N
4 Y 0 W N X 1
5 N X 1 E 1 Z 7
6 1 X 7 0 A W A
7 X X Z X N A 1
8 7 1 A N X Z N
9 N A Z N N N
10 A N Z 7 0 A E
11 E N A Z N N 1
12 E A 1 Z E E W
13 N W Z E X A 0
14 Y 1 A W A E X
我想从数据框中删除第 1、3、9 行。
我尝试了很多方法,例如:
df_col = [list of dxpoa column names]
df1 = df[df_col].isin(["Y", "W", "1", "E"]).values
它不会过滤掉。
【问题讨论】:
-
您想删除 any 的 dxpoa 列中包含
'7'或'N'的行还是只删除 所有这些列都包含'7'或'N'? -
我只想删除部分或全部列可能包含“7”或“N”的行。如果行有 7、N、E、W 等或 7、N 以外的混合,那么我想保留这些行。在第一行中,我写了“一些”,因为没有必要让所有 dxpoa 列都有值。许多列也是空白。这些列是值的占位符。在某些行中,只有 1 或 2 会有值,而在某些行中,所有 dxpoa 都会有值。
-
最好将空白视为空字符串,
''——类似于'7'或'N'的值。然后,您可以将问题表达为删除 all 值(在 dxpoa 列中)在['7', 'N', '']中的行之一。 -
我用确切的场景更新了你提供的数据框。我想从数据框中删除第 1、3、9 行。
标签: python-3.x numpy pandas