不同机器上的不同输出python代码

2024-09-30 00:23:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将多个csv文件导入字典。我的想法是,key是csv文件的名称,每个key的值都是csv中的表作为数据帧类型

我的代码如下:

import pandas as pd

data = '.././data/raw/'
all_files = [data + 'x.csv', data + 'y.csv']
list_a = []
result_dict = dict()
for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0, encoding='mac_roman')
    key = filename.split('/')[1]
    result_dict[key]=df

# print(result_dict)


def get_dataframe(name):
    dataframe = result_dict.get(name)
    return dataframe

m_taiin =get_dataframe('x.csv')
type(m_taiin)
print(isinstance(m_taiin,pd.DataFrame))

但当我在Macbook-Python3.7和Ubuntu 16.04上运行这段代码时,Python3.6的结果是真的

但是当我在ArchLinux-Python3.7上运行时,我的结果是错误的。该值为非类型而不是数据帧

我不知道这里的问题是什么


Tags: 文件csv数据key代码类型dataframedata
2条回答

为了避免split的跨平台问题,我建议您在os.sep上拆分,这是依赖于操作系统的文件分隔符

另外,我建议您使用glob库来列出文件夹中的.csv文件,并使用字典理解来创建dict

也就是说,您可以实现您的目标,即拥有一个字典,其中键是文件名,值是实际的数据帧,如下所示:

import pandas as pd
import glob
import os

data = '.././data/raw/'    
all_files = glob.glob(data+'*.csv')
result_dict = {csv_file.split(os.sep)[-1]: pd.read_csv(csv_file) for file in all_files}

当然,要注意在数据文件夹中只有想要的.csv,而不是其他的,因为glob.glob将列出所有的.csv

像这样在for循环中尝试

key = filename.split('/')[-1]

相关问题 更多 >

    热门问题