繁体   English   中英

文本文件行到 CSV 列 python

[英]text file rows into CSV column python

我有一个问题,我有一个包含这样数据的文本文件

一个 34 45 7789 3475768 443 67 8999 3343 656 8876 802 383358 873 36789 2374859 485994 86960 32838459 3484549 24549 58423

电话 3445 574649 68078 59348604 45959 64585304 56568 595 49686 656564 55446 665 677 778 433 545 333 65665 3535

等等

我想从这个文本文件创建一个 csv 文件,显示这样的数据,A & T 作为列标题,然后是数字

34 3445

45 574649

7789 68078

3475768 59348604

443 45959

编辑(受 Michael Butscher 评论启发的更简单的解决方案):

import pandas as pd

df = pd.read_csv("filename.txt", delimiter=" ")
df.T.to_csv("filename.csv", header=False)

这是代码:

import pandas as pd

# Read file
with open("filename.txt", "r") as f:
    data = f.read()

# Split data by lines and remove empty lines
columns = data.split("\n")
columns = [x.split() for x in columns if x!=""]

# Row sizes are different in your example so find max number of rows
column_lengths = [len(x) for x in columns]
max_col_length = max(column_lengths)

data = {}
for i in columns:

    # Add None to end for columns that have less values
    if len(i)<max_col_length:
        i += [None]*(max_col_length-len(i))
    data[i[0]] = i[1:]

# Create dataframe
df = pd.DataFrame(data)

# Create csv
df.to_csv("filename.csv", index=False)

Output 应如下所示:

           A         T
0         34      3445
1         45    574649
2       7789     68078
3    3475768  59348604
4        443     45959
5         67  64585304
6       8999     56568
7       3343       595
8        656     49686
9       8876    656564
10       802     55446
11    383358       665
12       873       677
13     36789       778
14   2374859       433
15    485994       545
16     86960       333
17  32838459     65665
18   3484549      3535
19     24549      None
20     58423      None

这是我的代码

import pandas as pd
data = pd.read_csv("text (3).txt", header = None)
Our_Data = pd.DataFrame(data)
for rows in Our_Data:
  New_Data=pd.DataFrame(Our_Data[rows].str.split(' ').tolist()).T
New_Data.columns = New_Data.iloc[0]
New_Data = New_Data[1:]
New_Data.to_csv("filename.csv", index=False)

Output

    A   T
1   34  3445
2   45  574649
3   7789    68078
4   3475768 59348604
5   443 45959
6   67  64585304
7   8999    56568
8   3343    595
9   656 49686
10  8876    656564
11  802 55446
12  383358  665
13  873 677
14  36789   778
15  2374859 433
16  485994  545
17  86960   333
18  32838459    65665
19  3484549 3535
20  24549   None
21  58423   None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM