Python Pandas:根据第一列的内容对CSV文件进行排序

随机编码器

我有一个包含以下内容的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_在一起。

任何帮助将不胜感激。

耶斯列尔

我相信您需要sorted2个参数的功能,并按以下顺序更改顺序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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python根据选项卡分层文件中的第一列对行进行计数(不使用Pandas,Numpy等)

Pandas Python groupby 多列 - 根据具有特定值的第一列按列 2 中的值对行进行排序

按第一列对文本文件进行排序并计数重复python

根据第一列对CSV文件进行排序

如何根据第一列中的日期将CSV文件拆分为相应的CSV文件(Python)?

python pandas不从csv文件中读取第一列

从Python中的csv文件中删除第一列

读取csv文件Python时跳过第一列

使用python覆盖csv文件中的第一列和最后一列

如何使用Python根据一个文件对一组文件的内容进行排序

Python根据列名和第一列值进行整形

第一列 pf CSV for Python/Pandas read_csv 中未加引号的日期

Python如何根据CSV排序对Xml文件进行排序?

Python:对csv文件的列进行重新排序

如何根据CSV文件python中另一列中的值将json数据写入一列

根据匹配的Python第一列合并数据

Python Pandas:按另一列对数据透视表列进行排序

使用python在csv文件中仅保留第一列

如何在Python中基于第一列的值从csv文件中分隔行

在python中导出excel或csv文件时删除第一列

Python-无法用新的时间戳覆盖.csv文件的第一列

Python Pandas,根据另一列中的值进行日期时间舍入

Python Pandas,根据另一列中的值进行日期时间舍入

如何根据加速值对一列进行分组并进一步对另一列进行分组并对其进行计数(Pandas Python)

合并文件擅长使用Pandas覆盖Python第一列

考虑到Python Pandas中字母和列表的大小,如何根据第一列创建新列?

在python中读取CSV的第一列

根据文本文件中的第一个字母对单词进行排序,python

使用python和pandas将CSV文件中的三列合并为一列