Python 对不包括字符串列的整个数据帧进行排序
我希望在保持str列不变的情况下查找每个浮动列的百分比。 我使用了Python 对不包括字符串列的整个数据帧进行排序,python,pandas,Python,Pandas,我希望在保持str列不变的情况下查找每个浮动列的百分比。 我使用了df.rank(pct=True)但是它也对str列进行排序 我希望避免在代码中列出所有的浮动列,因为它们有很多,但只有几个字符串列 谢谢这应该可以: df.rank(pct=True, numeric_only=True) 您还可以将pct_秩值添加到原始数据帧列中 pd.concat([df[[''Category', 'Name'']], df.rank(pct=True, numeric_onl
df.rank(pct=True)
但是它也对str列进行排序
我希望避免在代码中列出所有的浮动列,因为它们有很多,但只有几个字符串列
谢谢这应该可以:
df.rank(pct=True, numeric_only=True)
您还可以将pct_秩值添加到原始数据帧列中
pd.concat([df[[''Category', 'Name'']],
df.rank(pct=True, numeric_only=True)],
axis='columns')
或将带有前缀的pct列添加到原始数据帧:
pd.concat([df,
df.rank(pct=True, numeric_only=True).add_prefix('pct_')],
axis='columns')
仅按选择数字列,并仅对这些列应用
rank
:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
num_cols = df.select_dtypes([np.number]).columns
df[num_cols] = df[num_cols].rank(pct=True)
print (df)
A B C D E F
0 a 0.333333 0.666667 0.416667 0.666667 a
1 b 0.833333 0.833333 0.666667 0.333333 a
2 c 0.333333 1.000000 0.833333 0.833333 a
3 d 0.833333 0.500000 1.000000 1.000000 b
4 e 0.833333 0.166667 0.416667 0.166667 b
5 f 0.333333 0.333333 0.166667 0.500000 b
谢谢,但是它隐藏了前2列,我可以用任何方式保留它们吗?嗯,它显示了一个错误“通过的项目数错误166,放置意味着1”@mjspier-对于提取数字列来说,更好的是更动态的解决方案,这里可能应该忽略一些非数字列,因为手动选择…是,当然,您有几个数字列,但分配给一列的任务不起作用。不过,更新的解决方案应该可以工作。此方法给了我一个错误“include和exclude必须都是非字符串序列”@user54083-因此需要
num\u cols=df。选择类型([np.number])。列?