在循环文件时添加列名
Posted
技术标签:
【中文标题】在循环文件时添加列名【英文标题】:Adding column names while looping through files 【发布时间】:2016-10-26 17:49:02 【问题描述】:我对 Python 很陌生,所以请多多包涵。我有一个包含 csv 文件的文件夹,其中第一行是我需要处理的数据。所以我需要给他们列名,以便我以后可以调用它们。每个 csv 具有相同数量的列。在我的练习中,我使用了三列。
我了解如何将文件名添加到单个文件:
my_file = pd.read_csv('path\the_file.csv', names = ['first','second','third'])
但我需要转到我的目录并循环浏览大量 csv 文件。老实说,我什至不知道该怎么做(我知道很难过)。我已经设法使用 os.listdir 遍历文件名,但是当我需要其中的数据时,这对我没有多大用处。一旦我得到这些列名,我就知道该怎么做了。
尽可能使用 pandas 是非常可取的。我看了很多,但似乎找不到任何真正有效的东西。我真的很感激帮助!
编辑: 这是我将要做的一部分,但需要为文件夹中的所有 csv 文件做。
my_file = pd.read_csv('path\the_file.csv', names=['first','second','third'])
first_col = my_file['first']
second_col = my_file['second']
third_col = my_file['third']
key_codes = []
key_codes.append(second.map(str) + third.map(str))
所以,如果第 2 列有“123”,第 3 列有“4”,那么我正在制作“1234”,但现在我只需要弄清楚如何循环文件并为它们添加相同的名称/标题。
【问题讨论】:
我想我不明白这个问题。请清楚说明什么不起作用。 嗨@wiredflamingo,你能告诉我们你的步骤吗?请记住,SO 不是代码工厂,也不是外包代码编写...欢迎使用 SO 或类似... 当你循环所有文件时,想要的输出是什么?列表 odDataFrames
?或者您需要将所有数据帧合并为一个?
抱歉,我有一个文件夹,里面有一堆 CSV 文件。我需要创建一个 for 循环,为每个 CSV 添加列名/标题。我不需要重写原始文件,只需要制作它,以便我可以调用代码中的列。例如,如果第 1 列显示“123”,第 2 列显示“4”,我会将其设为“1234”,但我知道该怎么做,我只需要能够调用这些列。希望这会有所帮助。
抱歉,您只需要添加列名并将每个列名写入新的 csv 吗?然后每个文件都有不同的标题或每个文件都有相同的标题?为什么需要熊猫?
【参考方案1】:
你需要IIUCglob
:
#glob can use path with *.txt - see http://***.com/a/3215392/2901002
import glob
key_codes = []
for files in glob.glob('files/*.csv'):
df = pd.read_csv(files, names = ['first','second','third'])
key_codes.append(df.second.map(str) + df.third.map(str))
通过iloc
选择second
和third
列的另一种解决方案,还删除了参数names
并将header=None
添加到read_csv
:
#glob can use path with *.txt - see http://***.com/a/3215392/2901002
import glob
key_codes = []
for files in glob.glob('files/*.csv'):
df = pd.read_csv(files, header=None)
key_codes.append(df.iloc[0,1].astype(str) + df.iloc[0,2].astype(str))
【讨论】:
哦,谢谢!我之前没有看到那个链接。我曾尝试过与您实际发布的内容非常相似的东西,但最终我忘记了所有尝试。以上是关于在循环文件时添加列名的主要内容,如果未能解决你的问题,请参考以下文章