我有一个包含以下内容的CSV文件:
R10_0_yrdi_391 111 1.11 1.0 1.1 111.0
R10_0_yfyrn_9132 222 2.22 2.0 2.2 222.0
R10_0_hfeisk_3 333 3.33 3.0 3.3 333.0
R20_0_yrdi_391 444 4.44 4.0 4.4 444.0
R20_0_yfyrn_9132 555 5.55 5.0 5.5 555.0
R20_0_hfeisk_3 666 6.66 6.0 6.6 666.0
现在,我要生成一个新的CSV文件,该文件的第一列已排序,使得与R10_0
和对应的相同R20_0
值将并排放置:
R10_0_yrdi_391 111 1.11 1.0 1.1 111.0
R20_0_yrdi_391 444 4.44 4.0 4.4 444.0
R10_0_yfyrn_9132 222 2.22 2.0 2.2 222.0
R20_0_yfyrn_9132 555 5.55 5.0 5.5 555.0
R10_0_hfeisk_3 333 3.33 3.0 3.3 333.0
R20_0_hfeisk_3 666 6.66 6.0 6.6 666.0
另一个捕获是第一列的那个部分,R10_0_
或者R20_0_
是固定的,但是后面部分的长度是固定的。_yrdi_391
,_yfyrn_9132
或者_hfeisk_3
是可变的。我试过使用:
f = df.columns.values.tolist()
df.sort_values(by=f[:1])
但是它的所有R10_0_
和R20_0_
在一起。
任何帮助将不胜感激。
我相信您需要sorted
2个参数的功能,并按以下顺序更改顺序reindex
:
#create index by first column by position
df = df.set_index(df.columns[0])
#create index by name of first column
#df = df.set_index('a')
a = sorted(df.index, key=lambda x: (x.split('_')[2:], x.split('_')[:2]), reverse=True)
df = df.reindex(a)
print (df)
b c d e f
a
R20_0_yrdi_391 444 4.44 4.0 4.4 444.0
R10_0_yrdi_391 111 1.11 1.0 1.1 111.0
R20_0_yfyrn_9132 555 5.55 5.0 5.5 555.0
R10_0_yfyrn_9132 222 2.22 2.0 2.2 222.0
R20_0_hfeisk_3 666 6.66 6.0 6.6 666.0
R10_0_hfeisk_3 333 3.33 3.0 3.3 333.0
要么:
a = sorted(df.index, key=lambda x: (x.split('_')[2:], x.split('_')[:2]))
df = df.reindex(a)
print (df)
b c d e f
a
R10_0_hfeisk_3 333 3.33 3.0 3.3 333.0
R20_0_hfeisk_3 666 6.66 6.0 6.6 666.0
R10_0_yfyrn_9132 222 2.22 2.0 2.2 222.0
R20_0_yfyrn_9132 555 5.55 5.0 5.5 555.0
R10_0_yrdi_391 111 1.11 1.0 1.1 111.0
R20_0_yrdi_391 444 4.44 4.0 4.4 444.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句