在列表中创建一个列表,用于索引的特定更改

时间:2019-03-25 07:30:23

标签: python

我所拥有的是一个包含大量数据的导入CSV文件中的列表(大列表)。它是一整年的天气数据。如此12个月的数据。月表示为1-12: 请看图片:

enter image description here

请注意,我不能导入任何模块!

如您所见,每个索引中年份之后的数字是月份(例如01、02、03等)。我要为此列表中的每个月份创建一个列表,例如[['2011,01,...,...],[2011,02,...,...]]。

我该怎么做?

我当前用于打开CSV数据并将其添加到列表的代码:

try:
    fp = open(filename, "r")
    data = []
    for line in fp:
        line = line.strip()
        cols = line.split(',')
        cols = cols[1:]
        data.append(','.join(cols))



    fp.close()

    print(data[1:])


except IOError:
     print("Error!!! Opening file...")

3 个答案:

答案 0 :(得分:1)

这看起来像是熊猫包装pip3 install pandas的工作。

使用熊猫,您可以使用read_csv函数读取csv文件。有了该数据框后,您可以选择所有月份。

这是一些示例代码:

import pandas as pd

df = pd.DataFrame([['2012', '01', '29'],
                   ['2012', '01', '30'],
                   ['2012', '01', '31'],
                   ['2012', '02', '01'],
                   ['2012', '02', '02'],
                   ['2012', '02', '03'],],
                 columns=['year', 'month', 'day'])
df[df['month']=='01']

哪个输出:

    year    month   day
0   2012    01      29
1   2012    01      30
2   2012    01      31

要读取csv,您可以在示例数据框的位置使用以下代码:

df = pd.read_csv('example.csv')

从那以后,我建议您使用熊猫做您想做的事情。但是,如果您绝对需要将数据作为列表列表,则可以执行以下操作:

list(df[df['month']=='01'].apply(lambda x: x.tolist(), axis=1))

哪个输出:

[['2012', '01', '29'], ['2012', '01', '30'], ['2012', '01', '31']]

答案 1 :(得分:0)

尝试在python中使用csv模块并将其作为这样的字典读取

import csv
def read_csv_to_dict(file_path):
    with open(file_path) as f:
        a = [{k: v for k, v in row.items()} for row in csv.DictReader(f, skipinitialspace=True, delimiter=',')]
    return a

data = read_csv_to_dict(filename)

然后数据是字典列表,每行仅一行。

我认为这是一个好的开始,如果需要更多帮助,请粘贴文件。

答案 2 :(得分:0)

由于不允许导入,请为每个月创建一个具有空数组作为该dict中的值的dict。然后将数据加载到字典中,然后将数据添加到该月的数组中。

month_dict = {}
for k in range(12):
    month_dict[k+1] = []

try:
    fp = open('example.csv', "r")
    data = []
    for line in fp:
        print(line)
        line = line.strip()
        cols = line.split(',')
        cols = cols[1:]
        month_dict[int(cols[1])].append(cols)
    fp.close()
    print(month_dict)
except IOError:
     print("Error!!! Opening file...")

要获取该月的数据列表,请阅读dict[month]。记住要转换为int