如何使用python中的硬编码数据将数组的内容转储到预先存在的csv

2024-09-28 01:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我之前已经发布了这个question

在这个程序的输出中,我得到一个包含4个元素的数组 像这样:

11111111,22222222,kkkkkk,lllllll
33333333,44444444,oooooo,ppppppp
qqqqqqqq,rrrrrr,ssssss,ttttttt

现在我有了另一个csv,它有更多的列(比如说10列),其中一些列有硬编码的数据,类似这样-

head1,head2,head3,head4,head5,head6,head7,head8,head9,head10
-,123,345,something,<blank>,<blank>,-,-,-,-

所以除了密码,所有的东西都是硬编码的。 我想在这些空白处打印输出的第一列和第二列,并在每一行重复硬编码的数据。 所以我的输出应该是这样的:

head1,head2,head3,head4,head5,head6,head7,head8,head9,head10
-,123,345,something,11111111,22222222,-,-,-,-
-,123,345,something,33333333,44444444,-,-,-,-
-,123,345,something,qqqqqqqq,rrrrrr,-,-,-,-

Tags: 数据编码somethinghead7head1head3head5head8
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:57

方法:

1)从done.csv中读取行并将它们附加到单独的列表中

2)用空列数据读取新的csv,我们称之为missing_data.csv

3)迭代1)中的列表数,即3

4)迭代missing_data.csv的每一列,直到找到一个空值

5)用当前从3)运行的列表填充空列

因此:

第1页):

import pandas as pd

initial_data1 = []
initial_data2 = []
initial_data3 = []

    line_num = 1
with open ("list.txt") as f:
    content = f.readlines()
    for line in content:
        if line_num == 1:
            initial_data1.append(line.split(","))
        elif line_num == 2:
            initial_data2.append(line.split(","))
        elif line_num == 3:
            initial_data3.append(line.split(","))

        line_num = line_num + 1

print(initial_data1)
print(initial_data2)
print(initial_data3)

输出:

[['11111111', '22222222', 'kkkkkk', 'lllllll\n']]
[['33333333', '44444444', 'oooooo', 'ppppppp\n']]
[['qqqqqqqq', 'rrrrrr', 'ssssss', 'ttttttt']]

其余的:

df = pd.read_csv("missing_data.csv")
heads = ['head1','head2','head3','head4','head5','head6','head7','head8','head9','head10']

   appending_line = 0
for index, row in df.iterrows():    
        if appending_line == 0:
            initial_data = initial_data1
        elif appending_line == 1:
            initial_data = initial_data2
        elif appending_line == 2:
            initial_data = initial_data3
        j = 0
        k = 0
        appending_line += 1
        for i in range(0, len(heads)):   # for the number of heads
                if str(row[heads[i]]) == " ":
                    print("FOUND EMPTY COLUMN: ", heads[i])
                    print("APPENDING VALUE: ", initial_data[j][k])
                    row[heads[i]] = initial_data[j][k]
                    k += 1

输出:

FOUND EMPTY COLUMN VALUE:  head5
APPENDING VALUE:  11111111
FOUND EMPTY COLUMN VALUE:  head6
APPENDING VALUE:  22222222
FOUND EMPTY COLUMN VALUE:  head5
APPENDING VALUE:  33333333
FOUND EMPTY COLUMN VALUE:  head6
APPENDING VALUE:  44444444
FOUND EMPTY COLUMN VALUE:  head5
APPENDING VALUE:  qqqqqqqq
FOUND EMPTY COLUMN VALUE:  head6
APPENDING VALUE:  rrrrrr

相关问题 更多 >

    热门问题