我对Python,Pandas和整体编程还是很陌生,如果这是一个愚蠢的问题,请对不起。
问题与this one非常相似(我已经在代码中使用了此问题),但我想更进一步,将所有分开的csv保存到同一个名称的每个文件夹中。
我现在有什么?
# this one is used to split carriers csv files
for i, x in carriers.groupby('Contact Account Name'):
x.to_csv(root + '/' "{}.csv".format(i.upper()), index=False)
+
for i, x in carriers.groupby('Contact Account Name'):
p = os.path.join(root, "{}.csv".format(i.upper()))
x.to_csv(p, index=False)
并且它将分组的“联系人帐户名称”值保存在根文件夹中作为单独的csvs。但是我需要将其保存到名为“联系帐户名称”值的根文件夹中的文件夹。
我尝试了几种创建文件夹的方法,但是失败了。
数据框:
Contact Account Name
0 Mike
1 Jeff
2 Todd
3 Bill
目前如何工作:
它正在创建csv:
root/MIKE.csv
root/JEFF.csv
root/TODD.csv
root/BILL.csv
我希望它是什么:
root/MIKE/MIKE.csv
root/JEFF/JEFF.csv
root/TODD/TODD.csv
root/BILL/BILL.csv
谢谢!
答案 0 :(得分:1)
您真正要做的就是将Contact Account Name
(i)添加到os.path.join
命令-
因此,以下应大致起作用- ```
for i, x in carriers.groupby('Contact Account Name'):
p = os.path.join(root, i, "{}.csv".format(i.upper()))
x.to_csv(p, index=False)
```
在此处查看更多-https://docs.python.org/2/library/os.path.html#os.path.join
答案 1 :(得分:1)
使用os.path.exists
检查文件夹是否存在,并使用os.mkdir
创建新文件夹:
new_dir = os.path.join(root, "Contact Account Name")
if not os.path.exists(new_dir):
os.mkdir(new_dir)
for i, x in carriers.groupby('Contact Account Name'):
p = os.path.join(new_dir, "{}.csv".format(i.upper()))
x.to_csv(p, index=False)
答案 2 :(得分:0)
您可以在循环外定义输出目录。如下所示,您可能希望检查它是否存在,如果不存在,则通过os.mkdir
创建目录。
# define output directory
output_dir = os.path.join(root, 'Contact Account Name')
# create the directory if it doesn't exist
if not os.path.exists(output_dir):
os.mkdir(output_dir)
for i, x in carriers.groupby('Contact Account Name'):
# create output path from output directory
p = os.path.join(output_dir, f'{i.upper()}.csv')
x.to_csv(p, index=False)
请注意,在上面的示例中,我使用的是f字符串,可在Python 3.6+中使用,并且更具可读性/效率。