当你获得了一些矩阵数据,并放在一个文件夹里,想将其转为面板数据,进行进一步计算,有什么快捷的方法呢?
假设有一个文件夹(存储路径为 “E:/数据/地方财政收入/” ),全部存放的都是矩阵数据,如下面两个图所示:
excel文件(.xls)的矩阵类似于这样:
只需要修改矩阵数据的存储位置(path=“E:/数据/地方财政收入/” )
然后,运行该文档,就可以在同一个文件夹中生成文本文件(.txt)
当然,这是个初步的代码,还需要将txt结果复制到excel中,进行分列、去重等处理,后续会继续优化^ ^
话不多说,上代码
import xlrd
import xlwt
import os
import pandas as pd
#【只需修改 待读取的文件夹】
path="E:/数据/地方财政收入/"
path_list=os.listdir(path)
#【总行数】
def max_row(file_name):
dataframe = pd.read_excel(file_name)
max_row = len(dataframe)+1
return max_row
#【总列数】
def max_column(file_name):
dataframe = pd.read_excel(file_name)
max_column = len(dataframe.columns)
return max_column
def pri(x,y):
row1=table.row_values(x)
print(y,row1)
def write_txt(filename,to_write):
with open(filename, 'a') as file_object:
file_object.write(to_write)
if __name__=='__main__':
for i in path_list:
file_name_r= path +i
data = xlrd.open_workbook(file_name_r)#打开excel文件,注意要写全路径
table = data.sheets()[0] #通过索引顺序获取
row_num = 0 #写的起始列
m=1 #读写的起始列
c = max_column(file_name_r)
r = max_row(file_name_r)
while m < c: #【总列数】
year= table.cell_value(0,m)
n = 0 #读的起始行
while n < r: #【总行数】
place = table.cell_value(n,0)
content = table.cell_value(n,m)
to_write = str(place)+' '+str(year)+' '+str(content)+'\n'
file_name_w = path + i[0:-4] + '.txt'
write_txt(file_name_w,to_write) #写入TXT文档
n +=1
m +=1
最后,致敬一直以来在网上分享的各位大神!