我将此数据集保存在.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)
答案 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')