【发布时间】:2020-09-17 18:03:50
【问题描述】:
我有一个这样的数据框:
mgr1 mgr2 mgr3
abc def fed
asd dij
sdf
df 确实包含空值
我正在尝试创建一个目录,其中唯一的 mgr3 值是顶级文件夹的名称,mgr2 唯一值是子文件夹,mgr1 唯一值是第二个子文件夹中的文件夹等。然后在每个文件夹中添加一个 txt 文件。
我将每列转换为具有唯一字符串的变量,然后尝试执行一些 for 循环以基于这些字符串创建文件夹,但我没有成功。
#someting like this
mgr1 = list(set(df.mgr1))
mgr1 = [x for x in mgr1 if str(x) != 'nan']
mgr1 = ''.join(mgr1)
# print(mgr1)
for i in mgr1:
os.system ("mkdir "+i)
for j in range (1):
os.system ("touch "+str(i)+"/"+str(j)+".txt")
有什么想法吗?
尝试 1:
import os
import sys
import pandas as pd
import itertools
df = pd.read_csv('sas-user-mappings-to-ceo.csv')
eight = df.loc[~df['mgr8'].isnull(), 'mgr8'].tolist()
seven = df.loc[~df['mgr7'].isnull(), 'mgr7'].tolist()
six = df.loc[~df['mgr6'].isnull(), 'mgr6'].tolist()
five = df.loc[~df['mgr5'].isnull(), 'mgr5'].tolist()
four = df.loc[~df['mgr4'].isnull(), 'mgr4'].tolist()
three = df.loc[~df['mgr3'].isnull(), 'mgr3'].tolist()
two = df.loc[~df['mgr2'].isnull(), 'mgr2'].tolist()
one = df.loc[~df['mgr1'].isnull(), 'mgr1'].tolist()
user_name = df.loc[~df['user_name'].isnull(), 'user_name'].tolist()
# third = df.loc[~df['user_lid'].isnull(), 'user_lid'].tolist()
paths = [list(x) for x in itertools.product(eight, seven, six, five, four, three, two, one, user_name)]
for pathToWrite in paths:
pathToWrite = "\Users\max\Downloads\users_visual"
toCreate = os.path.join("C:", pathToWrite)
os.mkdir(toCreate)
error: SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \UXXXXXXXX escape
【问题讨论】:
标签: python pandas for-loop mkdir