'How to convert text file column into csv file single row using pandas?
I have text file which look like this:
now I want to convert that text file in csv file single row
The outcome would look like: csv_output
Solution 1:[1]
First we will import pandas:
import pandas as pd
Second we will read the txt.file:
df = pd.read_csv("x.txt")
Third we will make this df -> csv with Transpose (to switch column orientation to row orientation) and header = False (will drop column names row)
df.T.to_csv('result.csv', header=False)
Solution 2:[2]
You could use T or transpose() to switch orientation of your DataFrame - Getting rid of headers and index set them to false:
df.T.to_csv('result.csv',header=False, index=False)
Example
import pandas as pd
df = pd.DataFrame(['db1','db2','db3','db4','db5','db6'])
df.T.to_csv('result.csv',header=False, index=False)
Output
db1,db2,db3,db4,db5,db6\r\n
Solution 3:[3]
A csv is also a text file. You could simply read the text file as follows:
with open("in.txt", "r") as f:
columns = f.read().splitlines()
And write a new one:
with open("out.csv", "w") as out:
out.write(",".join(columns)) # "," is default, you can use any sep
Solution 4:[4]
You coud zip the splited lines and then ",".join over the sum of the components:
with open("file.txt", "r") as fin,\
open("file.csv", "w") as fout:
col1, col2 = zip(*(line.rstrip().split() for line in fin))
fout.write(",".join(col1 + col2))
If needed, add a "\n" to the end of the row.
If you have much more columns than 2 you could use chain:
from itertools import chain
with open("file.txt", "r") as fin,\
open("file.csv", "w") as fout:
zipped = zip(*(line.rstrip().split() for line in fin))
fout.write(",".join(chain(*zipped)))
Re comment: Use groupby to chop the input into chunks, and then use the procedure above on the chunks:
from itertools import groupby, chain
with open("file.txt", "r") as fin,\
open("file.csv", "w") as fout:
for key, group in groupby(fin, key=lambda line: bool(line.strip())):
if key:
zipped = zip(*(line.rstrip().split() for line in group))
fout.write(",".join(chain(*zipped)) + "\n")
Out put for file.txt
dq1 sp1 tq1 rp1
dq2 sp2 tq2 rp2
dp3 sp3 tq3 rp3
dp4 sp4 tq4 rp4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
in file.csv is
dq1,dq2,dp3,dp4,sp1,sp2,sp3,sp4,tq1,tq2,tq3,tq4,rp1,rp2,rp3,rp4
1,5,9,13,2,6,10,14,3,7,11,15,4,8,12,16
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Builescu Daniel |
| Solution 2 | |
| Solution 3 | miguelocana |
| Solution 4 |
