这是我到目前为止的代码:
import pandas as pd
import glob, os
os.chdir("L:/FMData/")
results = pd.DataFrame([])
for counter, file in enumerate(glob.glob("F5331_FM001**")):
namedf = pd.read_csv(file, skiprows=[1,2,3,4,5,6,7], index_col=[1], usecols=[1,2])
results = results.append(namedf)
results.to_csv('L:/FMData/FM001_D/FM5331_FM001_D.csv')
然而,这会按照指示生成新文档,但不会将任何数据复制到其中。我想在某个位置查找文件,名称沿着FM001,组合它们,跳过每个csv中的前7行,并且只保留新文件中的第1列和第2列。任何人都可以帮助我的代码吗?
提前致谢!!!
答案 0 :(得分:0)
此代码适用于我(使用Linux和Python 3),它使用数据填充csv文件。
在print
之后添加read_csv
以查看您的csv文件是否实际读取了任何数据,否则不会写任何内容,如下所示:
namedf = pd.read_csv(file)
print(namedf)
results = results.append(namedf)
它添加第1行(可能因为它被认为是标题)然后跳过7行然后继续,这是我的结果,因为csv文件只是从一行写到11行:
F5331_FM001.csv
一个
0九
1十
2月11日
增加: 如果print(namedf)没有显示任何内容,请检查输入文件。 python程序在L:/ FMData /中查找您的文件。您确定您的文件位于该目录中吗?您可以通过使用os.chdir命令添加正确的路径来更改目录。
答案 1 :(得分:0)
要组合多个csv文件,您应该创建一个数据框列表。然后,只需一步即可通过pd.concat
合并列表中的数据框。这比附加到现有数据帧更有效。
此外,您需要将结果写入外的for
循环文件。
例如:
results = []
for counter, file in enumerate(glob.glob("F5331_FM001**")):
namedf = pd.read_csv(file, skiprows=[1,2,3,4,5,6,7], index_col=[1], usecols=[1,2])
results = results.append(namedf)
df = pd.concat(results, axis=0)
df.to_csv('L:/FMData/FM001_D/FM5331_FM001_D.csv')