我在一个名为:
它们都有一个叫做“数字”的表,我想把三个文件中的数据合并到一个新的数据框中,我已经用下面的代码完成了。但是,我还想添加两个新列:一个名为“Channel”的列将为所有文件读取“Digital”,另一个名为“financial”的列将为从第一个文件获取的数据读取“FY18”,从第二个文件读取FY19,从第三个文件读取FY20。你知道吗
我有下面的for循环,虽然我设法得到数据合并和通道好,我不能想出一个方法来添加正确的财政对每个数据输入。我通过在第一个下划线前加上字符串,从文件名中提取会计科目的名称。你知道吗
digital_df = pd.DataFrame()
os.chdir(plans_folder)
for infile in glob.glob(plans_folder + "*Msft Cloud*.xlsm"):
for fiscal in glob.glob("*Msft Cloud*.xlsm"):
data_digital = pd.read_excel(infile, sheetname="Digital", skiprows=9)
data_digital.insert(0, "Channel", "Digital")
digital_df = digital_df.append(data_digital, ignore_index=True)
fiscal = fiscal.split('_', 1)[0]
digital_df['Fiscal'] = fiscal
digital_df
有什么想法吗?你知道吗
您可以使用^{} 更容易地从完整的文件路径中获取信息,它会报告文件名(通常是!)。你知道吗
因此您可以执行以下操作(假设您已经导入了
os
)。注意,您可以简化您的循环—您以前同时执行了infile
和fiscal
,这两个操作实际上返回了相同的文件列表,这意味着您将四个文件中的每一个都获取四次!此外,在合并数据帧之前添加会计年度更容易:另外,如果您以这种方式使用
os.path.basename()
,则不需要更改到目录(使用os.chdir
)要将此数据帧写入csv,可以使用数据帧的
to_csv()
方法:这将覆盖任何现有的文件,并且使用
os.path.join
确保我们最终与这些文件位于同一个文件夹中。你知道吗相关问题 更多 >
编程相关推荐