Python Pandas 添加文件名列 CSV
Python Pandas add Filename Column CSV
我的 python 代码在下面的例子中工作正常。我的代码组合了一个 CSV 文件目录并匹配 headers。但是,我想更进一步 - 如何添加一个列来附加所用 CSV 的文件名?
import pandas as pd
import glob
globbed_files = glob.glob("*.csv") #creates a list of all csv files
data = [] # pd.concat takes a list of dataframes as an agrument
for csv in globbed_files:
frame = pd.read_csv(csv)
data.append(frame)
bigframe = pd.concat(data, ignore_index=True) #dont want pandas to try an align row indexes
bigframe.to_csv("Pandas_output2.csv")
这应该有效:
import os
for csv in globbed_files:
frame = pd.read_csv(csv)
frame['filename'] = os.path.basename(csv)
data.append(frame)
frame['filename']
创建一个名为 filename
的新列,os.path.basename()
将 /a/d/c.txt
之类的路径转换为文件名 c.txt
.
Mike 上面的回答非常有效。如果任何 googlers 运行 出现以下错误:
>>> TypeError: cannot concatenate object of type "<type 'str'>";
only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
可能是因为分隔符不正确。我使用的是自定义 csv 文件,因此分隔符是 ^
。因此,我需要在 pd.read_csv
调用中包含分隔符。
import os
for csv in globbed_files:
frame = pd.read_csv(csv, sep='^')
frame['filename'] = os.path.basename(csv)
data.append(frame)
files 变量包含当前目录中的所有 csv 文件列表。如
['FileName1.csv',FileName2.csv']
。您还需要删除 ".csv"
。您可以使用 .split()
函数。下面是简单的逻辑。这对你有用。
files = glob.glob("*.csv")
for i in files:
df=pd.read_csv(i)
df['New Column name'] = i.split(".")[0]
df.to_csv(i.split(".")[0]+".csv")
我的 python 代码在下面的例子中工作正常。我的代码组合了一个 CSV 文件目录并匹配 headers。但是,我想更进一步 - 如何添加一个列来附加所用 CSV 的文件名?
import pandas as pd
import glob
globbed_files = glob.glob("*.csv") #creates a list of all csv files
data = [] # pd.concat takes a list of dataframes as an agrument
for csv in globbed_files:
frame = pd.read_csv(csv)
data.append(frame)
bigframe = pd.concat(data, ignore_index=True) #dont want pandas to try an align row indexes
bigframe.to_csv("Pandas_output2.csv")
这应该有效:
import os
for csv in globbed_files:
frame = pd.read_csv(csv)
frame['filename'] = os.path.basename(csv)
data.append(frame)
frame['filename']
创建一个名为 filename
的新列,os.path.basename()
将 /a/d/c.txt
之类的路径转换为文件名 c.txt
.
Mike 上面的回答非常有效。如果任何 googlers 运行 出现以下错误:
>>> TypeError: cannot concatenate object of type "<type 'str'>";
only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
可能是因为分隔符不正确。我使用的是自定义 csv 文件,因此分隔符是 ^
。因此,我需要在 pd.read_csv
调用中包含分隔符。
import os
for csv in globbed_files:
frame = pd.read_csv(csv, sep='^')
frame['filename'] = os.path.basename(csv)
data.append(frame)
files 变量包含当前目录中的所有 csv 文件列表。如
['FileName1.csv',FileName2.csv']
。您还需要删除 ".csv"
。您可以使用 .split()
函数。下面是简单的逻辑。这对你有用。
files = glob.glob("*.csv")
for i in files:
df=pd.read_csv(i)
df['New Column name'] = i.split(".")[0]
df.to_csv(i.split(".")[0]+".csv")