我试图将 Dataframe 的行元素分配到四分位数中。然而,行可以仅具有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来存储 Dataframe ,但由于顶行(我认为),我遇到了一个错误。当我跑的时候
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
函数
1条答案
按热度按时间dhxwm5r41#
可能的解决方案:
输出: