Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对不包括字符串列的整个数据帧进行排序_Python_Pandas - Fatal编程技术网

Python 对不包括字符串列的整个数据帧进行排序

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

我希望在保持str列不变的情况下查找每个浮动列的百分比。 我使用了
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])。列