python - 如何创建一个仅包含数据框名称的列表作为元素用作其他函数调用的输入
问题描述
我正在尝试连接多个具有相似文件名的 csv 文件。我想这样做的方法是编写一个函数并使用 for 循环运行该函数。
我写的函数:
def GetEach(LastBit):
FilePath = r'file:///Path\FLAG_' + LastBit + '.csv'
df = pd.read_csv(FilePath)
df = df[['CRN', 'ALCOHOL_RELATED', 'CELL_PHONE', 'DRINKING_DRIVER', 'DRUG_RELATED',
'ILLEGAL_DRUG_RELATED', 'DRUGGED_DRIVER',
'IMPAIRED_DRIVER' ]]
return df
然后我写的for循环如下所示。代码的原因是 csv 文件的文件名几乎相同,除了不同的年份。
for i in range(2, 8):
MyInput = '201' + str(i) + '_Northampton'
r.append(GetEach(MyInput))
我最终想要获得的是类似的东西WhatIWant = [GetEach(2012), GetEach(2013)...]
,然后我就可以跑去pd.concat(WhatIWant )
获得我想要的东西。但显然我的代码会使数据框在列表中完全解开r
。
我该如何修复我的代码?还是有更好的方法来做到这一点?
谢谢。
解决方案
这是读取 csv、将数据帧附加到列表然后将它们连接到 1 个大数据帧的好方法。
您的代码示例并不完整。你的代码看起来像这样吗?
import pandas as pd
def GetEach(LastBit):
FilePath = r'file:///Path\FLAG_' + LastBit + '.csv'
df = pd.read_csv(FilePath)
df = df[['CRN', 'ALCOHOL_RELATED', 'CELL_PHONE', 'DRINKING_DRIVER', 'DRUG_RELATED', 'ILLEGAL_DRUG_RELATED', 'DRUGGED_DRIVER','IMPAIRED_DRIVER' ]]
return df
r = [] # Start with an empty list!
for i in range(2, 8):
MyInput = '201' + str(i) + '_Northampton'
r.append(GetEach(MyInput))
df_complete = pd.concat(r)
如果是这样,您是否检查过各个 df 是否正确?
推荐阅读
- docker - 在非 root 用户的 docker ubuntu 容器中使用 supervisord 运行 sshd
- wcf - WCF Web 服务中的 System.IO.DirectoryNotFoundException
- javascript - 如何使用 JavaScript 将 JSON 转换为 CSV
- reactjs - ReactDOM 渲染到多个节点
- azure - 逻辑应用程序:如何使用每个循环合并多个响应
- python - Pandas 在非常大的数据帧上进行多处理
- c# - Redis 不会从数据库中检索所有数据
- python-3.x - 如何将浮点数与损失列表相加?我收到错误
- javascript - 更改下拉菜单中复选框的位置
- symfony - Symfony 部署与 capistrano 抛出“目标目录“web”不存在。” 关于资产安装