我试图将数据帧的行元素分配到四分位数中。但是,这些行只能具有NaN,例如:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [np.nan, 20, 30, 40],
'B': [np.nan, np.nan, 31, 41],
'C': [np.nan, 22, 32, 42],
'D': [np.nan, 23, 33, 43],
'E': [np.nan, np.nan, 34, np.nan]
}
)
我正试图用qcut来存储数据帧,但由于最上面一行的原因,我遇到了一个错误(我想)。当我跑步时
df.T.apply(lambda x: x.where(not (x.isna().all()), pd.qcut(x, 4, labels=False)).T)
它让我摔倒了
IndexError: index -1 is out of bounds for axis 0 with size 0
理想情况下,我想保留
NaNs
在最上面一行,并应用
qcut
其余部分的功能