首页 > 解决方案 > 使用两个 for 循环将字符串解析为数据帧

问题描述

我有一个代码,我正在尝试使用两个列表来实现。代码的要点如下;

import pandas as pd
import numpy as np
LX = ['A','B','C','D']
DX =['col1','col2','col3','col4','col5','col6']
my_dfs = {}
for name in LX:
    my_dfs[name] = pd.read_csv(r"C:\HSTS\OB\ODO\%s.csv" % name, delimiter=';')
    cols = [0,19,20,21,22,23,24]
    my_dfs[name]=my_dfs[name][my_dfs[name].columns[cols]]
    my_dfs[name].columns = ['col1','col2','col3','col4','col5','col6']
    for dx in DX:
        my_dfs[name]['dx'] = my_dfs[name]['dx'].diff().abs()

第一个 for 循环没有问题,LX 列表中的字符串被解析为数据帧。第二个 for 循环是问题,我无法将字符串解析到数据框中。目标是要有榜样;

my_dfs[name]['col1'] = my_dfs[name]['col1'].diff().abs()
my_dfs[name]['col2'] = my_dfs[name]['col2'].diff().abs()

标签: pandasdataframe

解决方案


似乎问题在于您的第二个循环'dx'每次都传递一个文字字符串,而不是变量dx

改变

...
    for dx in DX:
        my_dfs[name]['dx'] = my_dfs[name]['dx'].diff().abs()

...
    for dx in DX:
        my_dfs[name][dx] = my_dfs[name][dx].diff().abs()

推荐阅读