首页 > 解决方案 > 对 pandas 使用正确的分隔符

问题描述

我正在使用 pandas 读取一个 csv 文件,将其排序为“正则表达式”中的指定值,然后用排序后的数据吐出一个新的 csv 文件。我的输出看起来很棒,除了它看起来像这样并且都被列为在 csv 文件的一行中

row 1                           row 2
" 1 2 3 4 5 6 7 8 9 10 11 12"   "1 2 3 4 5 6 7 8 9 10 11 12"

当我真的想要它时:

row 1 row 2 row 3 row 4
1     2     3     4

将数据分成单独的行的正确分隔符方法是什么?我已经尝试了很多组合,但还没有任何效果。在此文件的末尾,我将在我的 csv 文件中附上一段实际数据。

File = 'file'
out_file ='out_file'

df = pd.read_csv(File)
dffilter = df.filter(regex='201411')
dffilter.to_csv(blank)



 "20141107T204206Z 28.00 82.82 239.93 1.849e-01 5.590e-02 1.4210e+02 -9.0000e+00 6.686 1 13.88 -9.00 0.01580 1 8 -9.0 -9.0
20141107T204334Z 28.00 83.06 240.19 2.067e-01 5.547e-02 1.1299e+02 -9.0000e+00 6.840 97 13.93 -9.00 0.02789 1 8 -9.0 -9.0

等等。

标签: pythonpandascsv

解决方案


你可以试试这个

# read all columns except 1st as datasets
df = pd.read_csv('csvFile.csv', header=None).iloc[:, 1:]

# read 1st column as columns of the data and save them into a list
headers = pd.read_csv('csvFile.csv', header=None).iloc[:, 0].tolist()

# transpose the data
df = df.transpose()

# rename columns
df.columns = headers

df.reset_index(drop=True)
print(df)

    20141107T204206Z  20141107T204334Z
0            28.0000          28.00000
1            82.8200          83.06000
2           239.9300         240.19000
3             0.1850           0.20700
4             0.0559           0.05550
5           142.0000         113.00000
6            -9.0000          -9.00000
7             6.6860           6.84000
8             1.0000          97.00000
9            13.8800          13.93000
10           -9.0000          -9.00000
11            0.0158           0.02789
12            1.0000           1.00000
13            8.0000           8.00000
14           -9.0000          -9.00000
15           -9.0000          -9.00000

推荐阅读