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

问题描述 投票:1回答:1

我想把多个csv文件导入到一个字典中。我的想法是key是csv文件的名称,每个key的值是csv里面的表作为DataFrame类型。

我的代码是这样的。

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上运行这段代码时,结果是True。

但是当我在Arch Linux - Python 3.7上运行时,我的结果是False。值是NoneType而不是DataFrame。

我不知道哪一个是问题所在。

python pandas
1个回答
1
投票

试着这样在for循环中...

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

1
投票

为了避免跨平台的问题 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.

© www.soinside.com 2019 - 2024. All rights reserved.