【发布时间】:2015-05-23 12:51:53
【问题描述】:
我对编程非常陌生,并且正在使用 Python。对于一个工作项目,我试图读取几个 .csv 文件,将它们转换为数据帧,将一些字段连接成一个列标题,然后将所有数据帧附加到一个大数据帧中。我在 StackOverflow 以及其他资源中进行了广泛的搜索,但我无法找到答案。这是我迄今为止的代码以及一些缩写输出:
import pandas as pd
import glob
# Read a directory of files to a list
csvlist = []
for f in glob.glob("AssayCerts/*"):
csvlist.append(f)
csvlist
['AssayCerts/CH09051590.csv', 'AssayCerts/CH09051591.csv', 'AssayCerts/CH14158806.csv', 'AssayCerts/CH14162453.csv', 'AssayCerts/CH14186004.csv']
# Read .csv files and convert to DataFrames
dflist = []
for csv in csvlist:
df = pd.read_csv(filename, header = None, skiprows = 7)
dflist.append(df)
dflist
[ 0 1 2 3 4 5 \
0 NaN Au-AA23 ME-ICP41 ME-ICP41 ME-ICP41 ME-ICP41
1 SAMPLE Au Ag Al As B
2 DESCRIPTION ppm ppm % ppm ppm
#concatenates the cells in the first three rows of the last dataframe; need to apply this to all of the dataframes.
for df in dflist:
column_names = df.apply(lambda x: str(x[1]) + '-'+str(x[2])+' - '+str(x[0]),axis=0)
column_names
0 SAMPLE-DESCRIPTION - nan
1 Au-ppm - Au-AA23
2 Ag-ppm - ME-ICP41
3 Al-% - ME-ICP41
我无法对所有 DataFrame 应用最后一个操作。看来我只能将其应用于列表中的最后一个 DataFrame。一旦我超过了这一点,我将不得不附加所有的 DataFrame 以形成一个大的 DataFrame。
【问题讨论】:
-
你有一些缩进问题(大概是你被否决的原因之一)。我认为问题出在最后一部分,您分配给
column_names,但只有最后一个df 被分配(其余部分被覆盖),即您没有附加到更改dflist的列表中...大概这不是你的意图。
标签: python-2.7 loops csv pandas dataframe