簡體   English   中英

Dataframe 根據與另一個 Z6A8064B5DF4794555500553C47C55057DZ 的比較過濾行

[英]Dataframe filter rows based on comparison with another dataframe

我想根據日期過濾一個 dataframe,該日期介於另一個 dataframe 的日期之間。

我試過以下代碼:

df1 = pd.DataFrame({
                   'Start':['1/1/2016', '1/1/2016', '1/1/2016', '1/1/2016', '1/1/2016'], 
                    'end':['1/12/2016', '1/12/2016', '1/12/2016', '1/12/2016', '1/12/2016'], 
                   'Qty':[1, 2, 3, 4, 2],
                   })

df2 = pd.DataFrame({
                    'Start':['1/1/2016', '1/1/2016', '1/1/2016'], 
                    'end':['1/6/2016', '1/6/2016', '1/6/2016'], 
                    'Price':[11, 12, 31],
                   })

df2[(df2['Start']>=df1['Start']) & (df2['end']<=df1['end'])]

它應該 select 所有三行 df2。 但是給出了這個錯誤:

ValueError: Can only compare identically-labeled Series objects

PS 在我的情況下,行數不能相同。

您應該在兩個數據框中有相同數量的行進行比較。這里您在df1中有 5 行,在df2中有 3 行。

  • pandas.to_datetime() - 將參數轉換為日期時間。
  • DataFrame.reindex() - 使 DataFrame 符合具有可選填充邏輯的新索引,將 NA/NaN 放置在先前索引中沒有值的位置。

前任。

import pandas as pd

df1 = pd.DataFrame({
                   'Start':['1/1/2016', '1/1/2016', '1/1/2016', '1/1/2016', '1/1/2016'],
                    'end':['1/12/2016', '1/12/2016', '1/12/2016', '1/12/2016', '1/12/2016'],
                   'Qty':[1, 2, 3, 4, 2],
                   })

df2 = pd.DataFrame({
                    'Start':['1/1/2016', '1/1/2016', '1/1/2016'],
                    'end':['1/6/2016', '1/6/2016', '1/6/2016'],
                    'Price':[11, 12, 31],
                   })

# resize df2 shape
df2 = df2.reindex(df1.index)

# convert argument to datetime.
df1['Start'] = pd.to_datetime(df1['Start'])
df1['end'] = pd.to_datetime(df1['end'])

df2['Start'] = pd.to_datetime(df2['Start'])
df2['end'] = pd.to_datetime(df2['end'])

print(df2[(df2['Start'] >= df1['Start']) & (df2['end'] <= df1['end'])])

       Start        end  Price
0 2016-01-01 2016-01-06   11.0
1 2016-01-01 2016-01-06   12.0
2 2016-01-01 2016-01-06   31.0

暫無
暫無

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

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