Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过python中的布尔运算器获取数字索引_Python_Pandas_Indexing_Dataframe_Conditional Statements - Fatal编程技术网

通过python中的布尔运算器获取数字索引

通过python中的布尔运算器获取数字索引,python,pandas,indexing,dataframe,conditional-statements,Python,Pandas,Indexing,Dataframe,Conditional Statements,现在我可以使用布尔运算符获得期望值: mask1 = df.val > 10 mask2 = df.val < 5 c1 = df[mask1] c2 = df[mask2] df[1:3]和df[4:7]的片段就是我想要的。首先,我需要通过mask1和mask2获取索引1、3、4、7。你知道怎么做吗?这个假设对你有用: c1 = df[df['val'] > 10].index.tolist() c2 = df[df['val'] < 5].index.tolist(

现在我可以使用布尔运算符获得期望值:

mask1 = df.val > 10
mask2 = df.val < 5
c1 = df[mask1]
c2 = df[mask2]

df[1:3]
df[4:7]
的片段就是我想要的。首先,我需要通过
mask1
mask2
获取索引
1
3
4
7
。你知道怎么做吗?

这个假设对你有用:

c1 = df[df['val'] > 10].index.tolist()
c2 = df[df['val'] < 5].index.tolist()
c1=df[df['val']>10].index.tolist()
c2=df[df['val']<5]。index.tolist()
输出:c1=[1,4]c2=[3,7]


根据遮罩条件将较大的数据帧子集为较小的数据帧

df_mask1 = df[df.val > 10]
#in df_mask1  you will have index 1 and 4 [Rows of main dataframe]
#similarly
df_mask2  = df[df.val < 5] 
# you will have index 3 and 7 in df_mask2  
df_mask1=df[df.val>10]
#在df_mask1中,您将有索引1和4[主数据帧的行]
#同样地
df_mask2=df[df.val<5]
#在df_mask2中有索引3和索引7
或者,如果您想通过该掩码条件更改其他一些列值,您可以使用df.loc(只需尝试在web上搜索即可)。

我认为您可以使用:

c1 = df[mask1].index
c2 = df[mask2].index

print (c1)
Int64Index([1, 4], dtype='int64')
print (c2)
Int64Index([3, 7], dtype='int64')

print (df[c1[0]:c2[0]])
   val
1   12
2    5

print (df[c1[1]:c2[1]])
   val
4   11
5    9
6    9
这与:

print (df[1:3])
   val
1   12
2    5

print (df[4:7])
   val
4   11
5    9
6    9
如果需要按
c1
c2
进行切片,请使用:


谢谢你的回答!我想知道我是否可以直接做一些类似于
df[c1]
的事情来获取值
12,11
?您需要添加
ix
loc
print(df.ix[c1])
返回
val 1124 11
顺便说一句,
ix
更快。但是列呢
df.ix[c1,'val']
?是的,它也与nice列一起工作
df.ix[c1,'val']
,然后获取
Serie
,而不是
DataFrame
print (df[1:3])
   val
1   12
2    5

print (df[4:7])
   val
4   11
5    9
6    9
print (df.ix[c1])
   val
1   12
4   11

print (df.ix[c2])
   val
3    2
7    3