zer*_*r02 12 python python-2.7 pandas
我想知道如何删除列中包含负值的所有索引.我正在使用熊猫DataFrames.
格式:
Myid - valuecol1 - valuecol2 - valuecol3 -... valuecol30
所以我DataFrame被称为data
我知道如何为1列做到这一点:
data2 = data.index[data['valuecol1'] > 0]
data3 = data.ix[data3]
Run Code Online (Sandbox Code Playgroud)
所以我只得到ids在哪里valuecol1 > 0,我怎么能做某种and陈述?
valuecol1 && valuecol2 && valuecol3 && ... && valuecol30 > 0 ?
And*_*den 21
您可以all用来检查整行或列是否为True:
In [11]: df = pd.DataFrame(np.random.randn(10, 3))
In [12]: df
Out[12]:
0 1 2
0 -1.003735 0.792479 0.787538
1 -2.056750 -1.508980 0.676378
2 1.355528 0.307063 0.369505
3 1.201093 0.994041 -1.169323
4 -0.305359 0.044360 -0.085346
5 -0.684149 -0.482129 -0.598155
6 1.795011 1.231198 -0.465683
7 -0.632216 -0.075575 0.812735
8 -0.479523 -1.900072 -0.966430
9 -1.441645 -1.189408 1.338681
In [13]: (df > 0).all(1)
Out[13]:
0 False
1 False
2 True
3 False
4 False
5 False
6 False
7 False
8 False
9 False
dtype: bool
In [14]: df[(df > 0).all(1)]
Out[14]:
0 1 2
2 1.355528 0.307063 0.369505
Run Code Online (Sandbox Code Playgroud)
如果您只想查看列的子集,例如[0, 1]:
In [15]: df[(df[[0, 1]] > 0).all(1)]
Out[15]:
0 1 2
2 1.355528 0.307063 0.369505
3 1.201093 0.994041 -1.169323
6 1.795011 1.231198 -0.465683
Run Code Online (Sandbox Code Playgroud)
您可以遍历列名称
for cols in data.columns.tolist()[1:]:
data = data.ix[data[cols] > 0]
Run Code Online (Sandbox Code Playgroud)
要在数据框内使用 and 语句,您只需使用单个 & 字符并用括号分隔每个条件。
例如:
data = data[(data['col1']>0) & (data['valuecol2']>0) & (data['valuecol3']>0)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38960 次 |
| 最近记录: |