数据框基于与另一个数据框的比较过滤行

时间:2019-10-07 09:54:11

标签: python pandas dataframe filter

我想根据介于另一个数据框的日期之间的日期过滤一个数据框。

我尝试了以下代码:

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'])]

它应该选择df2的所有三行。但是给出了这个错误:

ValueError: Can only compare identically-labeled Series objects

P.S。在我的情况下,行数不能相同。

2 个答案:

答案 0 :(得分:0)

两个数据帧中的行数应该相等以便进行比较。这里df1中有5行,df2中有3行。

答案 1 :(得分:0)

例如。

class Contacts extends Component {

  render() {
    console.log(this.props.contacts); // use props instead of state
    return (
      <div>
        {this.props.contacts.map((contact, index) => 
          <div>
            <Contact key={index} contact={contact} contacts={this.props.contacts}/>
          </div>
        )}
      </div>
    )
  }
}