在同一行python中组合forloops而不更改dict中的对象类型

2024-09-16 20:11:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想复制一个字典,里面有两个dfs,而不使用copy模块的deepcopy()函数

例如:

dict = {'a': {1: pd.Dataframe(...), 2: pd.Dataframe(...)}

copy_dict = {'a': {i: v.copy() for i in dict for v in dict.values()}}

上面的方法可以工作,但是它将dfs转换为绑定方法。我想要的是不转换dataframe对象

copy_dict中,df转换为以下内容:

<bound method NDFrame.copy of                            DEtoDK  DKtoDE
2021-01-01 00:00:00+00:00    2500    2500
2021-01-01 01:00:00+00:00    2500    2500
2021-01-01 02:00:00+00:00    2500    2500
2021-01-01 03:00:00+00:00    2500    2500
2021-01-01 04:00:00+00:00    2500    2500
...                           ...     ...
2021-05-31 19:00:00+00:00    2280    2500
2021-05-31 20:00:00+00:00    2500    2360
2021-05-31 21:00:00+00:00    2500    2170
2021-05-31 22:00:00+00:00    2500    2280
2021-05-31 23:00:00+00:00    2500    2310

[3624 rows x 2 columns]>

type(copy_dict['a'])
method

1条回答
网友
1楼 · 发布于 2024-09-16 20:11:09

使用以下命令:

copy_dict = {k_outer: 
    {k_inner: v_inner.copy() for k_inner, v_inner in v_outer.items()} 
    for k_outer, v_outer in dict.items()
}

注意:不要使用dict(对于这一点,任何python内置函数名)作为变量名

要针对特殊情况对其进行修改(例如,仅适用于键'a'):

copy_dict = {'a': 
    {k: v.copy() for k, v in dict['a'].items()} 
}

相关问题 更多 >