根据文件名 (pandas) 将 CSV 连接成 XLSX 文件
Concatenate CSVs into XLSX files based on filename (pandas)
我有一堆名称为“<3-letter-string> YYYY.csv”的 CSV。 <3-letter-string> 有四个不同的版本,我想将 csvs 分成四个 xlsx,每个 xlsx 由三个字母的字符串标识。
我的代码:
import pandas as pd
import os
full_df = pd.DataFrame()
for filename in os.listdir('C:/Users/XXXXXX/ZZZZZZ'):
if filename.endswith(".csv"):
print(filename)
df = pd.read_csv(filename, skiprows=1, names=['ID','Units Sold','Retail Dollars'])
df['Year'] = filename[-8:-4]
full_df = pd.concat([full_df, df])
full_df.to_excel(filename[0:3] + '.xlsx', index=False)
这会生成四个不同的 xlsx,这正是我想要的,但它们都是不同 csvs 的混合体。
如何告诉 pandas 根据文件名将它们分成四个单独的 xlsx?我最初的想法是在倒数第二行中包含文件名切片并创建四个不同的串联 full_df 数据帧来单独写入,但我不确定如何。
import pandas as pd
import os
def Get_Yo_Fantasy_Hennnnnyyyyy():
full_df = pd.DataFrame()
for filename in os.listdir("path"):
if filename.endswith(".csv"):
print(filename)
df = pd.read_csv(
filename,
skiprows=1,
names=["ID", "Units Sold", "Retail Dollars"])
df["Year"] = filename[-8:-4]
df["Type"] = filename[0:3]
full_df = pd.concat([full_df, df])
for i in list(full_df.Type.unique()):
full_df[full_df.Type.str.contains(i)].to_excel(
"{}".format(i) + ".xlsx", index=False)
Get_Yo_Fantasy_Hennnnnyyyyy()
我有一堆名称为“<3-letter-string> YYYY.csv”的 CSV。 <3-letter-string> 有四个不同的版本,我想将 csvs 分成四个 xlsx,每个 xlsx 由三个字母的字符串标识。
我的代码:
import pandas as pd
import os
full_df = pd.DataFrame()
for filename in os.listdir('C:/Users/XXXXXX/ZZZZZZ'):
if filename.endswith(".csv"):
print(filename)
df = pd.read_csv(filename, skiprows=1, names=['ID','Units Sold','Retail Dollars'])
df['Year'] = filename[-8:-4]
full_df = pd.concat([full_df, df])
full_df.to_excel(filename[0:3] + '.xlsx', index=False)
这会生成四个不同的 xlsx,这正是我想要的,但它们都是不同 csvs 的混合体。
如何告诉 pandas 根据文件名将它们分成四个单独的 xlsx?我最初的想法是在倒数第二行中包含文件名切片并创建四个不同的串联 full_df 数据帧来单独写入,但我不确定如何。
import pandas as pd
import os
def Get_Yo_Fantasy_Hennnnnyyyyy():
full_df = pd.DataFrame()
for filename in os.listdir("path"):
if filename.endswith(".csv"):
print(filename)
df = pd.read_csv(
filename,
skiprows=1,
names=["ID", "Units Sold", "Retail Dollars"])
df["Year"] = filename[-8:-4]
df["Type"] = filename[0:3]
full_df = pd.concat([full_df, df])
for i in list(full_df.Type.unique()):
full_df[full_df.Type.str.contains(i)].to_excel(
"{}".format(i) + ".xlsx", index=False)
Get_Yo_Fantasy_Hennnnnyyyyy()