python - 如何灵活更改数据框的名称?
问题描述
我有许多数据框,名称如下 data_v1,data,v2,data_v3,data_v11,data_v12 等。
现在我喜欢遍历每个数据帧并对每个数据帧应用一个函数。所以我需要提供数据框名称。因为名字在第一部分是一样的。第二部分 after_ 是不同的。那么如何以如下方式编写数据框名称?下面有一个错误说 data_ 没有定义。非常感谢你的帮助
variable=['v1','v2','v3','v11','v12','v13']
for var in variable:
function(data_%s %var)
解决方案
- AB提供
[var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
- 这会创建一个数据框名称列表作为字符串
isinstance(eval(var), pd.core.frame.DataFrame)
DataFrame
在当前实例中找到任何。
import pandas as pd
# creates a list of strings
df_names_str = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# creates a list of dataframes
df_list = [eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# creates a dict of dataframes
df_dict = {f'{var}': eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)}
# test function
def test(v: pd.DataFrame):
print(v.info())
# function call with list of dataframes
for var in df_list:
test(var)
# function call with dict of dataframes
for k, v in df_dict.items():
test(v)
使用你的循环
- 必须评估字符串名称才能将其转换为 pandas 数据框对象。
variable=['v1', 'v2', 'v3', 'v11', 'v12', 'v13']
for var in variables:
function(eval(f'data_{var}'))
推荐阅读
- python - 如何在 Jupyter notebook 中工作时从虚拟环境中导出 .csv 文件
- python - 熊猫查询是否采用变量名称?
- python - 将属性添加到 Python TypedDict
- python - 在sklearn中覆盖自定义变压器的预测功能
- tensorflow - 如何在 keras 中自定义这种循环神经网络
- android - Unity.Android 我想加密 apk 文件中的 assets/bin/data。但是找不到资源
- html - 同时查看页面上所有元素的框模型?
- flutter - 如何在颤动的警报对话中初始化 SetState()?
- docker - Kubernetes 上的 Spark:Executor pod 在创建 sparkContext 时无法启动
- spring - webflux:内部事件总线和异步,松散耦合的事件监听器