簡體   English   中英

標識第二個數據框中的行的值小於第一個

[英]Identify rows in 2nd dataframe having values less than the first

我有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
df1.windspeed=df1.windspeed.astype(int)
df2.windspeed=df2.windspeed.astype(int)
df1.set_index('Date').windspeed.gt(df2.set_index('Date').windspeed)
Out[247]: 
Date
1/1/2008      True
1/2/2008     False
1/3/2008     False
1/4/2008      True
1/5/2008      True
1/6/2008     False
1/7/2008     False
1/8/2008      True
1/9/2008     False
1/10/2008     True
Name: windspeed, dtype: bool

更新資料

df1[df1.set_index('Date').windspeed.gt(df2.set_index('Date').windspeed).values]
Out[250]: 
         Date  windspeed
1    1/1/2008         36
4    1/4/2008         39
5    1/5/2008         45
8    1/8/2008         39
10  1/10/2008         37

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM