数据框有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)如何对列和行进行子集化,因此结果数据框中的所有w
和y
都受条件约束:
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)]
虽然很多打字......
答案 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