# Python pandas将excel数据写入txt

关于数据转换
将excel中的数据转为txt;

这是excel的数据:

img


1.所转换的txt文件的文件名取自excel的A列;
2.B、C、D列为txt的内容、C、D为不变值
3.每个txt文件有B、C、D三条数据内容,每条换行写入;
*如图:这是正确结果展示
对应的三行数据;一条一行、换行写入;

img


*code:

import pandas as pd

df = pd.read_excel('H:\excel.xlsx', sheet_name='test2')  # 获取excel的指定表单的数据

# 获取数据信息
test_data = []  # 所有数据信息

for i in df.index.values:  # 获取行号的索引,并将对其进行遍历
    # 根据i来获取每一行指定列的数据 并利用to_dict转成字典
    row_data = df.loc[i].to_dict()
    test_data.append(row_data)
# 处理成列表切嵌套字典
# print(test_data)

# 从excel中获取文件名数据
test_name = df.loc[:, '文件名'].values
data_name = list(test_name)
print(data_name)
# print(type(data_name)) # 获得的name数据存储在列表中

# 从excel中获取第一行数据
value1 = df.loc[:, '数据一'].values
data_value1 = list(value1)
print(data_value1)

for n in data_name:  # 从文件名列表中获取数据循环创建txt
    name = n
    f = open(str(name) + ".txt", "w")  # 循环一个文件名创建一个txt
    for x in value1:
        value = x
    f.write(str(value) + '\n二\n这是第三行')
f.close()

可以创建文件名对应的每个txt文件
*输出

img

img


遇到的问题:
都是写入的最后一条数据,for循环下 value 不能对应; 应如何处理循环;
正确目标:
写入数据应该是文件一[A2]下对应数据一[B2];文件二[A3]下对应数据二[B3],以此类推。
*即输出所有excel数据对应的txt;

for n in data_name:  # 从文件名列表中获取数据循环创建txt
    name = n
    f = open(str(name) + ".txt", "w")  # 循环一个文件名创建一个txt
    for x in value1:
        value = x
    f.write(str(value) + '\n二\n这是第三行')
f.close()

改一下f.write 的层次 ,放到循环里

for n in data_name:  # 从文件名列表中获取数据循环创建txt
    name = n
    f = open(str(name) + ".txt", "w")  # 循环一个文件名创建一个txt
    for x in value1:
        value = x
        f.write(str(value) + '\n二\n这是第三行')
f.close()

前面代码太乱了, 你把代码改成 遍历 excel 的每一行,
能逐个 print 出每一行数据就可以。

然后再加后面的写文件即可。

大概就是这样吧,参考一下。

import pandas as pd
 
df = pd.read_excel('H:\excel.xlsx', sheet_name='test2')  # 获取excel的指定表单的数据
for index, row in df.iterrows():
     value1 = [row[1],row[2],row[3]]
    name = row[0]
    print(name,"\t",value1)
    f = open(str(name) + ".txt", "w")  # 循环一个文件名创建一个txt
    for x in value1:
        value = x
        f.write(str(value)+ '\n')
    f.close()