当前位置: 首页 > 知识库问答 >
问题:

Pandas:使用循环和分层索引将多个csv文件导入dataframe

严俊友
2023-03-14
Events 
1,0.32,0.20,0.67
2,0.94,0.19,0.14,0.21,0.94
3,0.32,0.20,0.64,0.32
4,0.87,0.13,0.61,0.54,0.25,0.43 
5,0.62,0.21,0.77,0.44,0.16
# get a list of all csv files in target directory
my_dir = "C:\\Data\\"
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
    filelist.append(files)

# read each csv file into single dataframe and add a filename reference column 
# (i.e. file1, file2, file 3) for each file read
df = pd.DataFrame()
columns = range(1,100)
for c, f in enumerate(filelist) :
    key = "file%i" % c
    frame = pd.read_csv( (my_dir + f), skiprows = 1, index_col=0, names=columns )
    frame['key'] = key
    df = df.append(frame,ignore_index=True)
df1 = pd.DataFrame()
df2 = pd.DataFrame()
columns = range(1,100)
df1 = pd.read_csv("C:\\Data\\Currambene_001y09h00m_events.csv", 
                  skiprows = 1, index_col=0, names=columns)
df2 = pd.read_csv("C:\\Data\\Currambene_001y12h00m_events.csv", 
                  skiprows = 1, index_col=0, names=columns)
keys = [('file1'), ('file2')]
df = pd.concat([df1, df2], keys=keys, names=['fileno'])

我已经找到了许多相关的链接,但我仍然无法得到这个工作:

  • 将多个CSV文件读取到Python Pandas DataFrame中
  • 将多个不同列数的数据帧合并为一个大数据帧
  • 将多个csv文件导入到pandas中并连接到一个Dataframe中

共有1个答案

董光霁
2023-03-14

您需要决定要在什么轴上追加文件。熊猫总是试图通过以下方式做正确的事情:

  1. 假设每个文件中的每一列都不同,如果需要,将数字附加到跨文件名称相似的列中,这样它们就不会混在一起;
  2. 跨文件属于同一行索引的项并排放置在它们各自的列下。

有效追加的诀窍是将文件侧向倾斜,这样就可以获得与pandas.concat将执行的操作相匹配的所需行为。这是我的食谱:

from pandas import *
files = !ls *.csv # IPython magic
d = concat([read_csv(f, index_col=0, header=None, axis=1) for f in files], keys=files)
def reader(f):
    d = read_csv(f, index_col=0, header=None, axis=1)
    d.columns = range(d.shape[1])
    return d

df = concat([reader(f) for f in files], keys=files)
 类似资料:
  • 我试图将一个目录中的几个csv文件读入pandas,并将它们连接到一个大数据帧中,但出现以下错误: 这是我的密码 我不知道为什么它不起作用。我试图用chmod解决这个问题,但一切都变了

  • 主要内容:创建分层索引,应用分层索引,分层索引切片取值,聚合函数应用,局部索引,行索引层转换为列索引,列索引实现分层,交换层和层排序分层索引(Multiple Index)是 Pandas 中非常重要的索引类型,它指的是在一个轴上拥有多个(即两个以上)索引层数,这使得我们可以用低维度的结构来处理更高维的数据。比如,当想要处理三维及以上的高维数据时,就需要用到分层索引。 分层索引的目的是用低维度的结构(Series 或者 DataFrame)更好地处理高维数据。通过分层索引,我们可以像处理二维数据

  • 问题内容: 更新 在我发布此问题之后的第二秒,由于对结果查询的语法突出显示,我看到了出了什么问题:该字符串未以闭合斜线开头。现在我将其更改为: 但是,这提出了一个新问题:为什么PDO对象没有为此向我吐出错误?手动执行查询肯定会返回一个错误,指出没有名为的字段,最后是逗号。为什么我没有收到任何错误?有任何想法吗? PS:关于解决我的问题的SO语法突出显示方面有什么想法吗?:-) 我将原始问题留作参考

  • 问题内容: 将CSV文件读入pandas DataFrame的Python方法是什么(然后我可以将其用于统计操作,可以具有不同类型的列等)? 我的CSV文件具有以下内容: 在R中,我们将使用以下命令读取此文件: 这将返回R data.frame: 有没有Python的方法来获得相同的功能? 问题答案: 救援熊猫: 这会返回与相似的pandas DataFrame。

  • 我试图导入多个CSV文件在一个特定的路径到数据集HDF5文件使用此代码: 但我有一个错误: 第15行,在帧=pd.concat(li,轴=0,ignore_index=True)文件/usr/本地/lib/python3.7/site-包/熊猫/核心/重塑/concat.py,第281行,在统一排序=排序,文件/usr/本地/lib/python3.7/site-包/熊猫/Core/reshape

  • 问题内容: 我想将目录中的多个文件读入,并将它们连接成一个大的。我还无法弄清楚。这是我到目前为止的内容: 我想我在for循环中需要一些帮助吗??? 问题答案: 如果所有csv文件中的列均相同,则可以尝试以下代码。我已添加,header=0以便在读取csv第一行后可以将其分配为列名。 import pandas as pd import glob path = r’C:\DRO\DCL_rawdat