通过比较一行中的列来过滤Pandas DataFrame

时间:2017-08-09 17:50:21

标签: python pandas dataframe

我的DataFrame中的每一行都有两个日期列。如何过滤掉'日期A'在'日期B'之后的行?

示例:

symbol |    reports_at       |    as_of        |      signal   
...   
A     | 2012-02-15T21:00:00Z |  2012-02-01T12:00:00Z|   65.20464367   
...

此行应从DataFrame中删除,因为'reports_at'列中的日期出现在'as_of'列中的日期之后

1 个答案:

答案 0 :(得分:7)

您需要boolean indexingquery

<强> 1

#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;


    int main()
{
    int t;
    cin>>t;
    while(t--)
    { vector <int> a,b;
      int i,n,m,k;
      bool cond=true;
     cin>>n;
     for(i=0;i<n;i++)
     {
         cin>>m;
         a.push_back(m);
     }
     for(i=1;i<n-1;i++)
     {
         if(a.at(i)==a.at(i+1))
            a.erase(a.begin()+i);
     }
     n=a.size();
     for(i=0;i<n;i++)
        cout<<a[i];

    }
    return 0;
}

<强> 2

df1 = df[df['as_of'] > df['reports_at']]

第3

df1 = df.query('as_of > reports_at')

<强> 4

df1 = df[df['reports_at'] <= df['as_of']]