我使用的是Python 2.6(公司要求)和Pandas 13.0。
我尝试从DataFrame中获取符合多个条件的值:
这是一个例子来说明:
import pandas
df = pandas.DataFrame({
'A' : [0.00, 0.10, 0.15, 0.20, 0.28, 0.30, 0.35, 0.43, 0.47, 0.5],
'B' : [ 1, 1, 1, 2, 2, 2, 3, 3, 3, 3],
'C' : ['no', 'no', 'no', 'no', 'yes', 'yes', 'yes', 'yes', 'yes', 'yes'],
})
df.set_index(df['A'], inplace=True)
DataFrame提供:
in: print df
out:
A B C
A
0.00 0.00 1 no
0.10 0.10 1 no
0.15 0.15 1 no
0.20 0.20 2 no
0.28 0.28 2 yes
0.30 0.30 2 yes
0.35 0.35 3 yes
0.43 0.43 3 yes
0.47 0.47 3 yes
0.50 0.50 3 yes
我想从过滤器中获取以下值:
所以:
A B C
A
0.00 0.00 1 no
0.10 0.10 1 no
0.20 0.20 2 no
0.28 0.28 2 yes
0.30 0.30 2 yes
0.35 0.35 3 yes
0.50 0.50 3 yes
我不知道如何以简单的方式获得此结果(避免循环)。 有人有任何想法吗?
任何帮助都会非常感激。
感谢。
答案 0 :(得分:0)
在python 2.7和pandas 0.14上测试过,但我几乎可以肯定这对你的环境应该是相同的。使用示例数据框:
将df分组为B列,并获取该组中每个相同值的第一个和最后一个元素。
df.groupby('B').head(1)
df.groupby('B').last()
按照C列对df进行分组,并获取该组中每个相同值的第一个和最后一个元素:使用与上面相同的片段,但替换' B'为' C'
获取A列中0.1的倍数值
df[df.A % 0.1 == 0]