python-通过在每行中添加字符来编辑csv

时间:2018-06-26 17:51:35

标签: python

我将此数据集保存在.csv文件中: https://www.dropbox.com/s/2kzpzkhoiolhnlc/output.csv?dl=0

19,3,12
3
12
16,4
26,15,8,3
2
8
15
20
12,25,20,2,16
12,16
12,25
2,16
1,12
16,4
11,19,25,20
11,20,16,21
25,20,21
.....

对于每一行,如果数字小于51,而我需要添加?直到该行中有51个字符。例如,在第一行中,我有19、3、12,所以我必须添加48?具有这样的行:19,3,12,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? 在第二行中,我只有一个数字,所以我必须加50?,其他行也一样。你能帮我吗?

编辑:我已经尝试过了,但是没有用,只是在某些行中添加了“”:

import pandas as pd
df = pd.read_csv('output.csv', sep=';')
df = df.fillna('?')
df.to_csv('sorted2.csv', index=False)

2 个答案:

答案 0 :(得分:2)

如果需要,您可以只使用文本文件操作来完成此操作,在这种简单情况下,无需使用pandas或csv模块。

import csv
with open('source.csv') as f:
    with open('result.csv', 'w') as fw:
        for line in f:
            line = line.strip() + (',?' * (50 - line.count(',')))
            fw.write(line + '\n')   

答案 1 :(得分:1)

使用熊猫读取文件并设置所需的列数。以下代码读取文件并分配n列。默认情况下,多余的元素的值为np.nan

df.read_csv('file', names=range(n))

如果希望它们具有不同的值,则可以使用

进行分配
df.fillna(value, inplace = True)

然后,您只需将数据框写回到文件中,它将具有所需的形状

df.to_csv('file')