我正在尝试在数据框中的两列上使用等级函数。
问题:
其中一列包含空白值,这不允许我在排名前进行groupby。
错误::ValueError:长度不匹配:预期轴有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
答案 0 :(得分:1)
此代码给出了预期的结果。我试图避免对具有空值的列使用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())]