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

时间:2018-10-20 13:03:15

标签: python pandas

我正在尝试查找所有航班的前5条延迟航班,然后计算所有因天气原因导致延迟的航班。 使用此代码,我可以获得前五条延迟路线

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

数据框 dataframe image 这是输出

    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条航线因天气原因而延误的航班数量。

3 个答案:

答案 0 :(得分:0)

为了在编制索引时创建多个条件,可以使用:

dataframe[(dataframe["column1"] > condition1) & (dataframe["column2"] > condition2)]

您可以将&用于和|。或。

您还可以查看np.where()

答案 1 :(得分:0)

在对数据分组之前,请从数据框中选择所需的内容:

(flights_df.DepDelay > 0) & (flights_df.WeatherDelay > 0)

用括号df.fillna(0, inplace = True) df[(df.DepDelay > 0) & (df.WeatherDelay > 0)].groupby(['Origin','Dest'])['Origin'].count().sort_values(ascending=False).head(5) 括住条件

如果要按路线排在前5位,则应按路线定义分组,在这种情况下,应按“起点”和“目的地”分组。

   foreach ($applications as $app) {
        echo $app["title"]."<br>";
        foreach ($app["server"] as  $server){
            echo  $server."<br>";
        }
        echo "<br>";
    }

答案 2 :(得分:0)

我自由地举了例子来说明这一点:

>>> 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,则我打印了DataFrame。

>>> 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

链接提供的数据:

>>> 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