Python - 根据文件名从其他Excel文件中复制特定列到一个新文件中

6 浏览
0 Comments

Python - 根据文件名从其他Excel文件中复制特定列到一个新文件中

我有一个脚本,它生成CSV文件,并按照时间戳的方式命名文件。

-rw-rw-r-- 1 9949 Oct 13 11:57 2018-10-13-11:57:10.796516.csv
-rw-rw-r-- 1 9649 Oct 13 12:58 2018-10-13-12:58:12.907835.csv
-rw-rw-r-- 1 9649 Oct 13 13:58 2018-10-13-13:58:10.502635.csv

我需要从这些表格中选择C列并将其写入新的CSV文件中。但是,新表格中的列的顺序应该按照现有表格的名称。

例如,来自于11:57生成的文件的C列应该在新表格的A列中,来自于12:58的在B列中,来自于13:38的在C列中。

编辑 - 基于Bilal的输入尝试的代码。它确实将所有现有表格中的C列移动到一个新表格中,但是顺序不正确。它只是随机选择它们,并在新文件的列上不断添加。

import os
import re
import pandas as pd
newCSV = pd.DataFrame.from_dict({})
# 获取csv文件列表并将其放入files
files = [f for f in os.listdir('.') if os.path.isfile(f)]
results = []
for f in files:
    if re.search('.csv', f):
        results += [f]
for file in results:
    df = pd.read_csv(file,usecols=[2])
    newCSV = pd.concat((newCSV, df), axis=1)
newCSV.to_csv("new.csv")

编辑 - 最终有效的代码,感谢Bilal

import os
import re
import pandas as pd
newCSV = pd.DataFrame.from_dict({})
files = [f for f in os.listdir('.') if os.path.isfile(f)]
# 获取csv文件列表并将其放入files
results = []
for f in files:
        if re.search('.csv', f):
                results += [f]
result1=sorted(results)
for file in result1:
    df = pd.read_csv(file,usecols=[2])
    newCSV = pd.concat((newCSV, df), axis=1)
newCSV.to_csv("new.csv") 

0
0 Comments

问题的出现原因:

根据问题描述,原因是代码中将现有表格中的列复制到新表格中时,它们的顺序与文件名的时间戳不一致。

解决方法:

根据问题描述,解决方法是在代码中添加"sorted(results)",以确保列按照文件名的时间戳顺序复制到新表格中。

以下是解决问题的完整代码:

import pandas as pd
newCSV = pd.DataFrame.from_dict({})
# 获取所有csv文件并将它们放入files列表中
for f in files:
    df = pd.read_csv(f)
    newCSV = pd.concat((newCSV, df.colum_name), axis=1)
# 根据文件名的时间戳对列进行排序
newCSV = newCSV.reindex(sorted(newCSV.columns), axis=1)
# 将新表格保存为new.csv文件
newCSV.to_csv("new.csv")

希望这个解决方法对您有帮助!

0