我试图让for fn in dirs:
下面的第一个for循环遍历目录中的文件列表,并合并具有相似文件名的文件。循环似乎只执行一次,而不是对dirs = os.listdir(path)
中列出的所有文件执行一次。我试过其他帖子中提到的几件事,但都没用。在
迭代循环对我有什么帮助?在
import pandas as pd
import os
import glob
path = r"C:\Users\St\Documents\House\m2"
dirs = os.listdir(path) #list of .csv files
for fn in dirs:
for fn in glob.glob(os.path.join(path, '*2.csv')):
W = fn
if len(W) == 48: # some filenames are one character shorter
root2 = W[:43]
else:
root2 = W[:42]
for fn in glob.glob(os.path.join(path, '*J.csv')):
J = fn
if len(J) == 48:
jroot = J[:43]
else:
jroot = J[:42]
for fn in glob.glob(os.path.join(path, '*T.csv')):
T = fn
if len(T) == 48:
troot = T[:43]
else:
troot = T[:42]
for fn in glob.glob(os.path.join(path, '*S.csv')):
S = fn
if len(S) == 48:
sroot = S[:43]
else:
sroot = S[:42]
for fn in glob.glob(os.path.join(path, '*D.csv')):
D = fn
if len(D) == 48:
droot = D[:43]
else:
droot = D[:42]
for fn in glob.glob(os.path.join(path, '*R.csv')):
R = fn
if len(R) == 48:
rroot = R[:43]
else:
rroot = R[:42]
WW = pd.read_csv(W) #read csv so I can use pd.merge
JJ = pd.read_csv(J)
TT = pd.read_csv(T)
SS = pd.read_csv(S)
DD = pd.read_csv(D)
RR = pd.read_csv(R)
if jroot == root2: #merge files with names that start with same characters
JW = pd.merge(WW, JJ, on="JN")
if jroot == troot:
TW = pd.merge(JW, TT, on="TN")
if jroot == sroot:
SW = pd.merge(TW, SS, on="SN")
if jroot == droot:
DW = pd.merge(SW, DD, on="DN")
if jroot == rroot:
RW = pd.merge(RR, DW, on="HN")
data = RW
data.to_csv(jroot + "x.csv") #export final merged dataframe to .csv
一个正确合并的数据帧返回文件夹。我预计会有几百人。在
目前没有回答
相关问题 更多 >
编程相关推荐