我有2个数据框,如下面的代码所示。两者的日期相同。我需要能够确定第二个数据框中的值小于同一日期的第一个值。根据数据,我应该得到1/1/2008的值为33、1 / 4/2008的值为35等,因为它小于第一个数据帧中的相应值。我能够获取布尔值,但是无法从第二个数据帧中获取实际值。
import pandas as pd
import numpy as np
data1 = {'Date': {1: '1/1/2008',
2: '1/2/2008',
3: '1/3/2008',
4: '1/4/2008',
5: '1/5/2008',
6: '1/6/2008',
7: '1/7/2008',
8: '1/8/2008',
9: '1/9/2008',
10: '1/10/2008'
},
'windspeed': {1: '36',
2: '38',
3: '40',
4: '39',
5: '45',
6: '33',
7: '31',
8: '39',
9: '41',
10: '37'}}
df1 = pd.DataFrame(data1)
data2 = {'Date': {1: '1/1/2008',
2: '1/2/2008',
3: '1/3/2008',
4: '1/4/2008',
5: '1/5/2008',
6: '1/6/2008',
7: '1/7/2008',
8: '1/8/2008',
9: '1/9/2008',
10: '1/10/2008'
},
'windspeed': {1: '33',
2: '39',
3: '42',
4: '35',
5: '43',
6: '40',
7: '39',
8: '37',
9: '44',
10: '35'}}
df2 = pd.DataFrame(data2)
设置索引(用于对齐)并比较-
i = df1.set_index('Date')
j = df2.set_index('Date')
j[i.windspeed > j.windspeed]
windspeed
Date
1/1/2008 33
1/4/2008 35
1/5/2008 43
1/8/2008 37
1/10/2008 35
如果日期列不相同,则可以align
先使用-
i, j = i.align(j)
然后,重复相同的比较+过滤步骤。如果要将Date
用作另一列,请调用reset_index
结果-
j[i.windspeed > j.windspeed].reset_index()
Date windspeed
0 1/1/2008 33
1 1/4/2008 35
2 1/5/2008 43
3 1/8/2008 37
4 1/10/2008 35
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句