Py学习  »  Python

python pandas对dataframe列进行排序

Jack • 4 年前 • 883 次点击  

我正在尝试对数据帧中的两列使用rank函数。

问题 :

其中一列包含空白值,这不允许我在排名前执行groupby。

误差 : 值错误:长度不匹配:预期轴有1122个元素,新值有1814个元素

 df_source['col1'] = df_source['col1'].apply(lambda \
    x:x.strip()).replace('',np.nan)

 df_source['Rank'] = df_source.groupby(by=['col0','col1']) \
    ['col1'].transform(lambda x: x.rank(na_option='bottom'))


      **Actual:**

        col0   col1
        98630  a
               a
        90211  a
        31111  a
               b
        23323  c

    **Expected**

        col0   col1  Rank
        98630  a      1
               a      2
        90211  a      1
        31111  a      1
               b      1
        23323  c      1
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40830
 
883 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Jack
Reply   •   1 楼
Jack    5 年前

这段代码给出了预期的结果。我试图避免对具有空值的列使用groupby函数。

    df['col0'] = df['col0'].replace('', np.nan)
    df_int = df.loc[df['col0'].notnull(), 'col1'].unique()
    df = df[~(df['col0'].isin(df_int) & df['col1'].isnull())]