例如,我有很多具有相似名称的数据框:
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
是否只有一种名称就能访问数据框?
谢谢!
答案 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]
当您要按名称访问这样的项目列表时,基于字典的方法比eval
(dangerous coding practice)更受欢迎,{您已经预先知道如何访问相关的DataFrame
。