在R
中,有一个名为assign
的函数,该函数为环境中的名称分配一个值。
例如:
assign("Hello", 2)
> Hello
[1] 2
在python中,我似乎无法做同样的事情。我最初尝试:
import numpy as np
import pandas as pd
import os
for file in os.listdir('C:\\Users\\Olivia\\Documents'):
if file.endswith(".csv"):
os.path.splitext(file)[0] = pd.read_csv('C:\\Users\\Olivia\\Documents\\' + file)
但是我可以看到这是在尝试使一个字符串等于一个不起作用的文件。
我设法通过执行以下操作来获取列表中的所有文件:
import glob
dl = glob.glob(r'C:\Users\Olivia\Documents\*.csv')
nl = []
for i in dl:
pl = i.split(os.sep)
name = pl[5][:-4]
nl.append(name)
ddict = {}
for k, v in zip(nl,dl):
ddict[k] = ddict.get(k,"") + v
dfl = []
for k, v in ddict.items():
dfl.append(read_csv(v))
但是现在我如何从列表中取出每个数据框并命名为不带扩展名的文件。必须有一种方法可以将列表中的每个数据框分配为文件列表中的名称
参考方案
老实说,您采用的第一种方法是正确的。不幸的是,正如您已经尝试并意识到的那样,python无法让您动态地创建“可变数量的变量”。然而!您可以创建字典并根据需要将数据帧分配给字符串键。这是如何做。
root = 'C:\\Users\\Olivia\\Documents'
ddict = {}
for file in os.listdir(root):
if file.endswith(".csv"):
name = os.path.splitext(file)[0]
ddict[name] = pd.read_csv(os.path.join(root, file))
构建此词典的另一种方法是使用dict理解:
ddict = {os.path.splitext(file)[0] : pd.read_csv(os.path.join(root, file))
for file in os.listdir(root) if file.endswith('csv')
}
现在,引用单个数据框就像
ddict['your_file_name']
要注意的另一件事是,最安全的文件连接方式是使用os.path.join
。它比普通的+
安全。
参考资料
How do I create a variable number of variables?
why use os.path.join over string concatenation
我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…
Python GPU资源利用 - python我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…
Python exchangelib在子文件夹中读取邮件 - python我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
R'relaimpo'软件包的Python端口 - python我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。