我需要winsorize我的12列数据框中的两列。假设我有列'A','B','C'和'D',每列都有一系列值。鉴于我已经清理了一些NaN色谱柱,色谱柱的数量从100个减少到了80个,但它们仍然被索引到100个(包括缺失的第5行)。如何在不丢失索引的情况下转换熊猫数据框?
我想通过winsorize方法只转换列'A'和'B'。为此,我必须将我的列转换为np.array。
import scipy.stats
df['A','B','C','D'] = #some values per each column
ab_df = df['A','B']
X = scipy.stats.mstats.winsorize(ab_df.values, limits=0.01)
new_ab_df = pd.DataFrame(X, columns = ['A','B'])
df = pd.concat([df['C','D'], new_ab_df], axis=1, join='inner', join_axes=[df.index])
当我转换为np.array,然后回pd.DataFrame,它的LEN()是正确的,在80,但我的指标已被重置为0-> 80。如何确保我的变换“A”和“B”列正确编制索引?我不认为我可以使用apply(),它将保留索引顺序,只需将值替换为我的方法,即只创建2列的df转换副本,然后将它们连接到我的其余部分未转换的列。
列数从100减少到80,或*行数*? – Alexander