Python Pandas:按行和列子集数据框?

时间:2016-12-25 15:45:37

标签: python pandas

数据框有w(周)和y(年)列。

d = {
    'y': [11,11,13,15,15],
    'w': [5, 4, 7, 7, 8],
    'z': [1, 2, 3, 4, 5]
}
df = pd.DataFrame(d)

In [61]: df
Out[61]:
   w   y  z
0  5  11  1
1  4  11  2
2  7  13  3
3  7  15  4
4  8  15  5

两个问题:

1)如何从此数据框最小/最大日期获取列表w中的两个数字y[w,y]

2)如何对列和行进行子集化,因此结果数据框中的所有wy都受条件约束:

11 <= y <= 15
4  <= w <= 7 

要获得最小/最大对,我需要函数:

min_pair() --> [11,4]                                                                                         
max_pair() --> [15,8]                                                                                         

以及这些以获取数据帧子集:

from_to(y1,w1,y2,w2)                                                                                        
from_to(11,4,15,7) -->

应该像这样返回rf数据框:

r = {
    'y': [11,13,15],
    'w': [4, 7, 7 ],
    'z': [2, 3, 4 ]
}

rf = pd.DataFrame(r)

In [62]: rf
Out[62]:
   w   y  z
0  4  11  2
1  7  13  3
2  7  15  4

这有什么标准功能吗?

更新

对于为我工作的下列子集:

df[(df.y <= 15 ) & (df.y >= 11) & (df.w >= 4) & (df.w <= 7)]

虽然很多打字......

1 个答案:

答案 0 :(得分:2)

以下是几种方法

In [176]: df.min().tolist()
Out[176]: [4, 11]

In [177]: df.max().tolist()
Out[177]: [8, 15]

In [178]: df.query('11 <= y <= 15 and 4 <= w <= 7')
Out[178]:
   w   y
0  5  11
1  4  11
2  7  13
3  7  15