Python 如何使用pandas在没有列名的情况下进行排序
我的数据是:Python 如何使用pandas在没有列名的情况下进行排序,python,sorting,pandas,Python,Sorting,Pandas,我的数据是: import pandas A=pandas.read_csv(r'D:\AUL_prediction\Merge_file\plasmid',sep=' ',header=None, engine='python') print A 结果是: 0 1 2 3 0 plasmid.gb NC021289.1 75
import pandas
A=pandas.read_csv(r'D:\AUL_prediction\Merge_file\plasmid',sep=' ',header=None, engine='python')
print A
结果是:
0 1 2 3
0 plasmid.gb NC021289.1 75
1 plasmid.gb NC016815.1 763
2 plasmid.gb NZCP011480.1 102
3 plasmid.gb NC017324.1 1278
4 plasmid.gb NC007488.2 32
5 plasmid.gb NC019848.2 632
6 plasmid.gb NZCP007644.1 208
7 plasmid.gb NC007336.1 46
8 plasmid.gb NZCP012748.1 402
9 plasmid.gb NZCP011248.1 353
我想根据A[3]和A[2]对这些数据进行排序,有人知道怎么做吗?我尝试对值进行排序,但是,它无法识别列名“0”或“1”请首先使用:
f = A.columns.values.tolist()
查看列的实际名称是什么。
然后您可以尝试:
A.sort_values(by=f[:2])
如果按列名排序,请记住2L是一个长整型,因此只需执行以下操作:
A.sort_values(by=[2L])
首先是:
f = A.columns.values.tolist()
查看列的实际名称是什么。
然后您可以尝试:
A.sort_values(by=f[:2])
如果按列名排序,请记住2L是一个长整型,因此只需执行以下操作:
A.sort_values(by=[2L])
这个问题由来已久,但我刚刚遇到了这个问题 如果没有列标题,只需给出值,并在
df.sort\u value
中避免关键字by
。解决方案:
df = df.sort_values(df.columns[i])
在你的例子中,df是
A
,而i
是列的索引。这个问题很老了,但我刚刚遇到了这个问题
如果没有列标题,只需给出值,并在df.sort\u value
中避免关键字by
。解决方案:
df = df.sort_values(df.columns[i])
在你的例子中,df是
A
,而i
是列的索引。我不知道你为什么坚持不使用标题
如果原始数据是这样的,那么这不是问题
您可以将标题分配给数据帧,这对程序员来说更具可读性
import pandas as pd
from io import StringIO
data = """
plasmid.gb,NC021289.1,75
plasmid.gb,NC016815.1,763
plasmid.gb,NZCP011480.1,102
plasmid.gb,NC017324.1,1278
plasmid.gb,NC007488.2,32
plasmid.gb,NC019848.2,632
plasmid.gb,NZCP007644.1,208
plasmid.gb,NC007336.1,46
plasmid.gb,NZCP012748.1,402
plasmid.gb,NZCP011248.1,3
"""
df = pd.read_csv(StringIO(data), sep=',', header=None, engine='python')
print('BEFORE\n', df)
df.columns = ['file', 'event-id', 'value']
print('\nAFTER\n', df.sort_values(['value', 'event-id'], ascending=[False, True]))
输出
BEFORE
0 1 2
0 plasmid.gb NC021289.1 75
1 plasmid.gb NC016815.1 763
2 plasmid.gb NZCP011480.1 102
3 plasmid.gb NC017324.1 1278
4 plasmid.gb NC007488.2 32
5 plasmid.gb NC019848.2 632
6 plasmid.gb NZCP007644.1 208
7 plasmid.gb NC007336.1 46
8 plasmid.gb NZCP012748.1 402
9 plasmid.gb NZCP011248.1 3
AFTER
file event-id value
3 plasmid.gb NC017324.1 1278
1 plasmid.gb NC016815.1 763
5 plasmid.gb NC019848.2 632
8 plasmid.gb NZCP012748.1 402
6 plasmid.gb NZCP007644.1 208
2 plasmid.gb NZCP011480.1 102
0 plasmid.gb NC021289.1 75
7 plasmid.gb NC007336.1 46
4 plasmid.gb NC007488.2 32
9 plasmid.gb NZCP011248.1 3
我不知道你为什么坚持不使用标题 如果原始数据是这样的,那么这不是问题 您可以将标题分配给数据帧,这对程序员来说更具可读性
import pandas as pd
from io import StringIO
data = """
plasmid.gb,NC021289.1,75
plasmid.gb,NC016815.1,763
plasmid.gb,NZCP011480.1,102
plasmid.gb,NC017324.1,1278
plasmid.gb,NC007488.2,32
plasmid.gb,NC019848.2,632
plasmid.gb,NZCP007644.1,208
plasmid.gb,NC007336.1,46
plasmid.gb,NZCP012748.1,402
plasmid.gb,NZCP011248.1,3
"""
df = pd.read_csv(StringIO(data), sep=',', header=None, engine='python')
print('BEFORE\n', df)
df.columns = ['file', 'event-id', 'value']
print('\nAFTER\n', df.sort_values(['value', 'event-id'], ascending=[False, True]))
输出
BEFORE
0 1 2
0 plasmid.gb NC021289.1 75
1 plasmid.gb NC016815.1 763
2 plasmid.gb NZCP011480.1 102
3 plasmid.gb NC017324.1 1278
4 plasmid.gb NC007488.2 32
5 plasmid.gb NC019848.2 632
6 plasmid.gb NZCP007644.1 208
7 plasmid.gb NC007336.1 46
8 plasmid.gb NZCP012748.1 402
9 plasmid.gb NZCP011248.1 3
AFTER
file event-id value
3 plasmid.gb NC017324.1 1278
1 plasmid.gb NC016815.1 763
5 plasmid.gb NC019848.2 632
8 plasmid.gb NZCP012748.1 402
6 plasmid.gb NZCP007644.1 208
2 plasmid.gb NZCP011480.1 102
0 plasmid.gb NC021289.1 75
7 plasmid.gb NC007336.1 46
4 plasmid.gb NC007488.2 32
9 plasmid.gb NZCP011248.1 3
它返回[0L,1L,2L,3L],当我使用命令时,A.sort_值(by=['2L'])仍然会遇到一个键错误:“2L”@zipaIt returens[0L,1L,2L,3L],当我使用命令时,A.sort_值(by=['2L'])仍然会遇到一个关键错误:“2L”@zipaThanks,我卡住了,因为它是以字符串形式传递索引的(IDK why)。使用
by=
(Python3):pd.DataFrame(list)。sort_值(by=0)
谢谢,我卡住了,因为我将索引作为字符串传递(IDK why)。使用by=
(Python 3):pd.DataFrame(list.sort\u值(by=0)