用python把csv文件按序排列,第一列和第三列,第一列升序,第三列降序

用python把csv文件按序排列,第一列和第三列,第一列升序,第三列降序
原数据如下:
6 8891 0.2374
6 8892 0.160365
1 8893 0.17207
1 2 0.628264
2 8891 0.2374
2 8892 0.160365
3 8893 0.17207
4 2 0.628264
5 1958 0.628264
5 1958 0.628264
1 6844 0.554702
第一列数据按序排列,第三列也按序排列,结果如下:

1 2 0.628264
1 6844 0.554702
1 8893 0.17207
2 8891 0.2374
2 8892 0.160365
3 8893 0.17207
4 2 0.628264
5 1958 0.628264
5 1958 0.628264
6 8891 0.2374
6 8892 0.160365

效果如图, 如有帮助给个采纳谢谢>?
原数据

img


转换后数据

img

代码 :

import pandas as pd

# 读取CSV文件
data = pd.read_csv('txt.csv', header=None)

# 按第一列升序,第三列降序排序
sorted_data = data.sort_values(by=[0, 2], ascending=[True, False])

# 将排序后的数据保存为CSV文件
sorted_data.to_csv('txtoutput.csv', index=False, header=False)


使用Python中的pandas库来处理csv文件

your_file.csv替换为你的原始CSV文件的文件名,

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_file.csv', delimiter=' ', header=None)

# 按照第一列和第三列进行排序
df = df.sort_values(by=[0, 2], ascending=[True, False])

# 将排序结果写入新的CSV文件
df.to_csv('sorted_file.csv', index=False, header=False, sep=' ')


pip install pandas

import pandas as pd

# 读取CSV文件
data = pd.read_csv('your_file.csv', header=None, delimiter=' ')

# 按照第一列和第三列进行排序
sorted_data = data.sort_values(by=[0, 2], ascending=[True, False])

# 显示排序后的结果
print(sorted_data)

可以使用Python的pandas库来实现对CSV文件的排序。示例:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_file.csv', header=None, delim_whitespace=True)

# 按第一列升序,第三列降序排列
df = df.sort_values(by=[0, 2], ascending=[True, False])

# 输出结果
print(df.to_string(index=False, header=False))

确保在运行代码之前你已经安装了pandas库,并将"your_file.csv"替换为你的CSV文件路径。运行代码后,就可以得到按照要求排序后的结果。

import csv

with open("./test.csv", newline="", encoding="utf-8") as rf, open(
    "./output.csv", "w", newline="", encoding="utf-8"
) as wf:
    csv_lines = list(csv.reader(rf, delimiter=' '))

    csv_lines.sort(key=lambda x: [float(x[0]), -float(x[2])])

    _writer = csv.writer(wf, quoting=csv.QUOTE_MINIMAL, delimiter=' ')

    _writer.writerows(csv_lines)


你可以使用Python中的csv模块和sorted函数来对CSV文件进行排序。下面是一个示例代码,可以根据你的要求对CSV文件进行排序,按照第一列升序排列,第三列降序排列:

import csv

def sort_csv(filename):
    # 读取CSV文件
    with open(filename, 'r') as file:
        reader = csv.reader(file)
        rows = list(reader)

    # 按照第一列升序排序
    sorted_rows = sorted(rows, key=lambda row: row[0])

    # 按照第三列降序排序
    sorted_rows = sorted(sorted_rows, key=lambda row: row[2], reverse=True)

    # 将排序后的数据写入新的CSV文件
    with open('sorted_' + filename, 'w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(sorted_rows)

    print("排序完成!")

# 调用函数进行排序,传入CSV文件名
sort_csv('your_csv_file.csv')

请将代码中的your_csv_file.csv替换为你实际的CSV文件名。代码会将排序后的数据写入一个新的CSV文件,文件名为sorted_your_csv_file.csv。如果你想在原始文件上进行排序,可以将输出文件名改为原始文件名。

这段代码首先读取CSV文件并将数据存储在一个列表中。然后,使用sorted函数两次对列表进行排序,第一次按照第一列升序排序,第二次按照第三列降序排序。最后,将排序后的数据写入新的CSV文件。

请确保你的Python环境已经安装了csv模块。你可以使用pip install csv命令来安装它。

第一列为主,第三列是跟随第一列的,第一列按大小排序,结果

img

代码如下

import pandas as pd

# 读取CSV文件
data = pd.read_csv('1.csv', sep=' ', header=None)

# 按照第一列升序排序
sorted_data = data.sort_values(by=[0], ascending=True)

# 根据第一列的顺序对第三列进行降序排序
sorted_data[2] = sorted_data.groupby(0)[2].transform(lambda x: x.sort_values(ascending=False))

# 输出排序后的结果到新的CSV文件
sorted_data.to_csv('1.csv', sep=' ', header=False, index=False)

问题点:csv文件读取,并执行排序
代码如下:

import pandas as pd
# 读取CSV文件
df = pd.read_csv('test.csv', header=None)
print('排序前')
print(df)
# 按第一列升序,第三列降序排序  0表示第一列  2表示第三列
sorted_df = df.sort_values(by=[0, 2], ascending=[True, False])
print('排序后')
print(sorted_df)
#  to_csv() 将排序后的数据保存为CSV文件
sorted_df .to_csv('res.csv', index=False, header=False)

import pandas as pd
 
# 读取CSV文件
data = pd.read_csv('txt.csv', header=None)
 
# 按第一列升序,第三列降序排序
sorted_data = data.sort_values(by=[0, 2], ascending=[True, False])
 
# 将排序后的数据保存为CSV文件
sorted_data.to_csv('txtoutput.csv', index=False, header=False)
 
 

py 实现读取csv文件并按照列的从大到小进行排序
可以参考下


Python对csv文件进行排序_python csv排序_Han-torch的博客-CSDN博客 在网上一共看到两种方法:第一种方法主要参考:pandas 数据排序.sort_index()和.sort_values() - 地球上最后一个直男 - 博客园需求是针对forall.csv中的第一列进行排序,因为没有命名,所以第一列字段默认为了’Unnamed:0‘。df_loc = df_loc.sort_values(axis=0, by='Unnamed: 0', ascending=True)print('df_loc=', df_loc)df_loc.to_csv('forall_python csv排序 https://blog.csdn.net/Han_torch/article/details/121264862

可以使用pandas库读取csv文件,转为dataframe格式的数据,然后使用sort_values方法对指定的列进行排序。

import pandas as pd  
  
# 读取csv文件  
df = pd.read_csv('data.csv')  
  
# 按第一列升序排列,第三列降序排列  
df = df.sort_values(by=['col1', 'col3'], ascending=[True, False])  
  
# 输出排序后的结果  
print(df)

采用chatgpt:
可以使用Python的csv模块来读取和写入CSV文件,并使用sorted函数进行排序。下面是一个按照你的要求对CSV文件进行排序的示例代码:

import csv

# 读取CSV文件
with open('input.csv', 'r') as file:
    reader = csv.reader(file, delimiter=' ')
    data = list(reader)

# 按照要求排序
sorted_data = sorted(data, key=lambda x: (int(x[0]), float(x[2])), reverse=[False, True])

# 写入排序后的结果到新的CSV文件
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file, delimiter=' ')
    writer.writerows(sorted_data)

请确保将输入文件名替换为你的实际输入文件名,并将输出文件名设置为你希望的输出文件名。执行该代码后,将会生成一个名为output.csv的文件,其中包含按要求排序后的数据。

这里假设每行的数据以空格作为分隔符,如果实际数据的分隔符不同,请根据实际情况进行相应调整。

上一次回答的,看了没

参考gpt:
我修改后如下:


# 导入csv模块
import csv

# 打开csv文件
with open('data.csv', 'r') as f:
    # 读取csv文件内容
    data = list(csv.reader(f, delimiter=' '))
    # 按照第一列升序,第三列降序排序
    data.sort(key=lambda x: (int(x[0]), -float(x[2])))
    # 打印排序后的结果
    for row in data:
        print(' '.join(row))

您可以使用Python的pandas库来对CSV文件进行排序。以下是按照您的要求对CSV文件进行排序的示例代码:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_file.csv', delimiter=' ', header=None)

# 按第一列和第三列排序
df = df.sort_values(by=[0, 2], ascending=[True, False])

# 输出排序结果
print(df)

请将代码中的your_file.csv替换为您实际的CSV文件路径。代码会读取CSV文件,并按照第一列升序、第三列降序的方式对数据进行排序。最后将排序结果打印输出。

希望这可以帮助到您!如果您有任何其他问题,请随时问。