Reordering lines in a txt file with Python
Question:
I have a txt file containing 2 columns that are not ordered:
1 0.1
4 0.5
3 0.2
To order it for plotting, i found that i could that i could open the file and use zip function such as :
data=np.loadtxt(file)
x=data[:, 0]
y = data[:, 1]
x, y = zip(*sorted(zip(x, y)))
It works well but it doesn’t actually modify the file and make the replacement to get the final output :
1 0.1
3 0.2
4 0.5
Answers:
import pandas as pd
data = pd.read_csv("data.txt", sep=' ', header=None)
data.sort_values(by=0).to_csv('data.txt', index=False, header=False, sep=' ')
or with lovely polars (similar to pandas but faster:)):
import polars as pl
data = pl.read_csv("data.txt", sep=' ', has_header=False)
data.sort(by="column_1").write_csv('data.txt', has_header=False, sep=' ')
I have a txt file containing 2 columns that are not ordered:
1 0.1
4 0.5
3 0.2
To order it for plotting, i found that i could that i could open the file and use zip function such as :
data=np.loadtxt(file)
x=data[:, 0]
y = data[:, 1]
x, y = zip(*sorted(zip(x, y)))
It works well but it doesn’t actually modify the file and make the replacement to get the final output :
1 0.1
3 0.2
4 0.5
import pandas as pd
data = pd.read_csv("data.txt", sep=' ', header=None)
data.sort_values(by=0).to_csv('data.txt', index=False, header=False, sep=' ')
or with lovely polars (similar to pandas but faster:)):
import polars as pl
data = pl.read_csv("data.txt", sep=' ', has_header=False)
data.sort(by="column_1").write_csv('data.txt', has_header=False, sep=' ')