如何为每个 CSV 文件创建单独的 Pandas DataFrame 并给它们起有意义的名字?
How to create separate Pandas DataFrames for each CSV file and give them meaningful names?
我已经彻底搜索过,但无法完全找到我正在寻找的关于这个问题的指导,所以我希望这个问题不是多余的。我有几个代表光栅图像的 .csv 文件。我想对它们进行一些统计分析,所以我试图为每个文件创建一个 Pandas 数据框,这样我就可以切片 'em dice 'em 和 plot 'em ...但是我在循环时遇到了问题为每个文件创建一个具有有意义名称的 DF 的文件列表。
这是我目前的情况:
import glob
import os
from pandas import *
#list of .csv files
#I'd like to turn each file into a dataframe
dataList = glob.glob(r'C:\Users\Charlie\Desktop\Qvik\textRasters\*.csv')
#name that I'd like to use for each data frame
nameList = []
for raster in dataList:
path_list = raster.split(os.sep)
name = path_list[6][:-4]
nameList.append(name)
#zip these lists into a dict
dataDct = {}
for k, v in zip(nameList,dataList):
dataDct[k] = dataDct.get(k,"") + v
dataDct
所以现在我有一个字典,其中键是我想要的每个数据帧的名称,值是 read_csv(path):
的路径
{'Aspect': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Aspect.csv',
'Curvature': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Curvature.csv',
'NormalZ': 'C:\Users\Charlie\Desktop\Qvik\textRasters\NormalZ.csv',
'Slope': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Slope.csv',
'SnowDepth': 'C:\Users\Charlie\Desktop\Qvik\textRasters\SnowDepth.csv',
'Vegetation': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Vegetation.csv',
'Z': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Z.csv'}
我的直觉是尝试这个的变体:
for k, v in dataDct.iteritems():
k = read_csv(v)
但这给我留下了一个数据帧 'k' ,其中填充了循环读取的最后一个文件中的数据。
我可能在这里遗漏了一些基本的东西,但我开始在这上面转动我的轮子,所以我想我会问你们大家...任何想法都会受到赞赏!
干杯。
您是否尝试在字典中分别获取所有数据帧,每个键一个数据帧?如果是这样,这将为您留下您显示的字典,而是每个键中的数据。
dataDct = {}
for k, v in zip(nameList,dataList):
dataDct[k] = read_csv(v)
所以现在,您可以这样做,例如:
dataDct['SnowDepth'][['cola','colb']].plot()
不清楚你为什么要在这里覆盖你的对象我想你想要 dfs 的列表或字典:
df_list=[]
for k, v in dataDct.iteritems():
df_list.append(read_csv(v))
或
df_dict={}
for k, v in dataDct.iteritems():
df_dict[k] = read_csv(v)
我已经彻底搜索过,但无法完全找到我正在寻找的关于这个问题的指导,所以我希望这个问题不是多余的。我有几个代表光栅图像的 .csv 文件。我想对它们进行一些统计分析,所以我试图为每个文件创建一个 Pandas 数据框,这样我就可以切片 'em dice 'em 和 plot 'em ...但是我在循环时遇到了问题为每个文件创建一个具有有意义名称的 DF 的文件列表。
这是我目前的情况:
import glob
import os
from pandas import *
#list of .csv files
#I'd like to turn each file into a dataframe
dataList = glob.glob(r'C:\Users\Charlie\Desktop\Qvik\textRasters\*.csv')
#name that I'd like to use for each data frame
nameList = []
for raster in dataList:
path_list = raster.split(os.sep)
name = path_list[6][:-4]
nameList.append(name)
#zip these lists into a dict
dataDct = {}
for k, v in zip(nameList,dataList):
dataDct[k] = dataDct.get(k,"") + v
dataDct
所以现在我有一个字典,其中键是我想要的每个数据帧的名称,值是 read_csv(path):
的路径{'Aspect': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Aspect.csv',
'Curvature': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Curvature.csv',
'NormalZ': 'C:\Users\Charlie\Desktop\Qvik\textRasters\NormalZ.csv',
'Slope': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Slope.csv',
'SnowDepth': 'C:\Users\Charlie\Desktop\Qvik\textRasters\SnowDepth.csv',
'Vegetation': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Vegetation.csv',
'Z': 'C:\Users\Charlie\Desktop\Qvik\textRasters\Z.csv'}
我的直觉是尝试这个的变体:
for k, v in dataDct.iteritems():
k = read_csv(v)
但这给我留下了一个数据帧 'k' ,其中填充了循环读取的最后一个文件中的数据。
我可能在这里遗漏了一些基本的东西,但我开始在这上面转动我的轮子,所以我想我会问你们大家...任何想法都会受到赞赏!
干杯。
您是否尝试在字典中分别获取所有数据帧,每个键一个数据帧?如果是这样,这将为您留下您显示的字典,而是每个键中的数据。
dataDct = {}
for k, v in zip(nameList,dataList):
dataDct[k] = read_csv(v)
所以现在,您可以这样做,例如:
dataDct['SnowDepth'][['cola','colb']].plot()
不清楚你为什么要在这里覆盖你的对象我想你想要 dfs 的列表或字典:
df_list=[]
for k, v in dataDct.iteritems():
df_list.append(read_csv(v))
或
df_dict={}
for k, v in dataDct.iteritems():
df_dict[k] = read_csv(v)