通过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