如何通过字符串访问熊猫数据框?

时间:2020-03-20 15:38:38

标签: python pandas dataframe

例如,我有很多具有相似名称的数据框:

NB_2014= pd.read_csv("E:/NB_2014.CSV", sep=';', thousands='.', decimal=',')
NB_2015= pd.read_csv("E:/NB_2015.CSV", sep=';', thousands='.', decimal=',')
NB_2016= pd.read_csv("E:/NB_2016.CSV", sep=';', thousands='.', decimal=',')
NB_2017= pd.read_csv("E:/NB_2017.CSV", sep=';', thousands='.', decimal=',')
NB_2018= pd.read_csv("E:/NB_2018.CSV", sep=';', thousands='.', decimal=',')

,依此类推。我在徘徊是否有一种方法可以仅通过拥有所需的年份来调用正确的数据框,例如,我尝试过:

year_needed = 2018
print("NB_"+str(year_needed)["col_needed"])

但出现以下错误:

TypeError: string indices must be integers

是否只有一种名称就能访问数据框?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在python上使用eval将字符串转换为代码

socket.on('msg', function(message) {
socket.emit('msg', {username: message.username, imgURL: message.imgURL, x: message.x, y: message.y})
})

答案 1 :(得分:0)

实现此目标的最佳方法是将DataFrame存储在字典中,例如:

dfs = {
    2014: pd.read_csv("E:/NB_2014.CSV", sep=';', thousands='.', decimal=',')
    2015: pd.read_csv("E:/NB_2015.CSV", sep=';', thousands='.', decimal=',')
    2016: pd.read_csv("E:/NB_2016.CSV", sep=';', thousands='.', decimal=',')
    2017: pd.read_csv("E:/NB_2017.CSV", sep=';', thousands='.', decimal=',')
    2018: pd.read_csv("E:/NB_2018.CSV", sep=';', thousands='.', decimal=',')
}

然后访问,例如,使用:

dfs[2018]

当您要按名称访问这样的项目列表时,基于字典的方法比evaldangerous coding practice)更受欢迎,{您已经预先知道如何访问相关的DataFrame