我有一个带有2000列的稀疏表,我想选择几个特定的行及其非零值。我怎么能这样做?
id name e1 e2 e3 e4 . . e550 . . e1200 . e1760. . e2000
1 engine1 0 0 0 2322 1300 140 0
2 engine2 0 0 1230 0 0 2100 0
.
.
.
998000
df[df.name==engine2 & ? ]
id name e3 e1200
2 engine2 1230 2100
和
df[df.name==engine1 & ? ]
id name e4 e550 e1760
1 engine1 2322 1300 140
答案 0 :(得分:3)
您可以按掩码m1
过滤两次 - 第一行,然后按m2
过滤。
上次使用loc
:
m1 = (df['name'] == 'engine2')
m2 = (df[m1] != 0).all()
print (df.loc[m1,m2])
id name e3 e1200
1 2 engine2 1230 2100
答案 1 :(得分:0)
所以基本上要过滤掉,请使用
new_df = df.loc[<enter row number here>]
new_df = new_df[new_df != 0]
此new_df现在将具有所需的非零值