我有一个Pandas数据框df
,我试图找到在其他Pandas数据框lst
中的阈值日之前每个州需要收获的公顷数area
。
lst = pd.DataFrame()
lst['ST'] = ['CA', 'MA', 'TX', 'FL', 'OH', 'WY', 'AK']
lst['doy'] = [140, 150, 160, 170, 180, 190, 200]
print(df)
doy ST ... area left
0 111 AK ... 4.293174e+05 760964.996900
1 120 AK ... 4.722491e+06 760535.679500
2 121 AK ... 8.586347e+06 760149.293900
3 122 AK ... 2.683233e+07 758324.695200
4 122 AK ... 2.962290e+07 758045.638900
.. ... ... ... ... ...
111 211 AK ... 7.609006e+09 107.329336
112 212 AK ... 7.609221e+09 85.863469
113 213 AK ... 7.609435e+09 64.397602
114 214 AK ... 7.609650e+09 42.931735
115 215 AK ... 7.610079e+09 0.000000
因此,我最终会得到一个 Dataframe ,其中包含lst
中阈值doy
之前的所有area
area ST
5.0000+05 CA
4.0123+05 MA
3.1941+05 TX
4.0011+05 FL
1.2346+05 OH
87.318+05 WY
0.7133+05 AK
我怎样才能做到这一点?
2条答案
按热度按时间33qvvth11#
您可以通过
lst
中的Series
MapST
列,并比较是否不像df['doy']
列,在boolean indexing
中过滤并聚合sum
:s4chpxco2#
如果我没理解错的话,你应该用doy过滤df,用ST和sum过滤group。
下面是一个doy在108之前的例子: