Python 如何对不同列上的熊猫使用条件

Python 如何对不同列上的熊猫使用条件,python,pandas,Python,Pandas,我试图从所有航班中找出前五名的延误航线,然后统计所有导致延误的天气状况航班。 使用此代码,我可以获得前五条延迟路线 flights_df.groupby(['Origin','Dest','WeatherDelay', flights_df.DepDelay>0])['WeatherDelay'].count().sort_values(ascending=False).head(5) 数据帧 这是输出 Origin Dest WeatherDelay DepDel

我试图从所有航班中找出前五名的延误航线,然后统计所有导致延误的天气状况航班。 使用此代码,我可以获得前五条延迟路线

    flights_df.groupby(['Origin','Dest','WeatherDelay', flights_df.DepDelay>0])['WeatherDelay'].count().sort_values(ascending=False).head(5)
数据帧 这是输出

    Origin  Dest  WeatherDelay  DepDelay
    LAX     SFO   0.0           True        3261
    ORD     LGA   0.0           True        3136
    ATL     LGA   0.0           True        2900
    SFO     LAX   0.0           True        2889
    LGA     ORD   0.0           True        2640
         Name: WeatherDelay, dtype: int64
我将如何设置WeatherDelay>0的条件以获得按天气排列的前5条路线延迟


关键是:我有起点和终点。我必须形成路线,然后找到延迟的路线数。此外,我还必须找到这5条航线因天气原因延误的航班数量。

为了在索引时提供多个条件,您可以使用:

dataframe[(dataframe["column1"] > condition1) & (dataframe["column2"] > condition2)]
您可以使用&for和,| for或


您还可以查看
np.where()
在对数据帧进行分组之前,从数据帧中选择所需内容:

flights_df[(flights_df.DepDelay > 0) & (flights_df.WeatherDelay > 0)].groupby(['Origin','Dest','WeatherDelay'])['WeatherDelay'].count().sort_values(ascending=False).head(5)
将您的条件用括号括起来
(flights\u df.DepDelay>0)和(flights\u df.WeatherDelay>0)

如果要按路线排列前5名,应按路线定义分组,在本例中,按起点和终点分组

df.fillna(0, inplace = True)

df[(df.DepDelay > 0) & (df.WeatherDelay > 0)].groupby(['Origin','Dest'])['Origin'].count().sort_values(ascending=False).head(5)

我冒昧地举了一个例子:

>>> mdf
    Name Product  Sale  Number
0   jack  Apples    34       1
1   Riti  Mangos    31       2
2   Aadi  Grapes    30       3
3  Sonia  Apples    32       4
4   Lucy  Mangos    33       5
5   Mike  Apples    35       6
因此,如果
Sale
大于31&
Number
为ge 3,则打印数据帧

>>> mdf[ (mdf['Sale'] > 31) & (mdf['Number'] >3) ]
    Name Product  Sale  Number
3  Sonia  Apples    32       4
4   Lucy  Mangos    33       5
5   Mike  Apples    35       6
link提供的数据:

>>> df[ (df['DepDelay'] !=0 ) & (df['WeatherDelay'] !=0) ].head()
  DepDelay Origin Dest WeatherDelay
0        8    IAD  TPA
1       19    IAD  TPA
2        8    IND  BWI
3       -4    IND  BWI
5       25    IND  JAX

它起作用了,但我得到的结果比我预期的要差得多。这是否意味着我走错了路线?你认为你可以发布你的原始数据吗?如果太大的话,还是一个样本?我不知道你说的“走开”是什么意思。笔记本呢?把你的数据源或样本放在哪里,如果你从本地文件中提取,笔记本本身不会让人们知道它保存了什么数据。数据源==>你能给我们看一下你的数据框架吗。这个问题与机器学习无关-请不要垃圾邮件标签(删除)。我有来源和目的地。我必须形成路线,然后找到延迟的路线数。另外,我还要找出这5条航线因天气原因而延误的航班数量。请再试一次
df[(df['DepDelay']!=0)和(df['WeatherDelay']!=0)]
,这对我来说很有效,它可以从csv文件中复制数据。