我所拥有的是一个来自导入CSV文件的列表(大的),其中包含了大量的数据。这是横跨一年的天气数据。所以12个月的数据。月份表示为1-12:请看图:

请注意,我不能导入任何模块!
正如你所看到的,每个指数的一年后的数字是月份。我想要做的是在这个列表中为每个月创建一个列表,例如['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...")发布于 2019-03-25 08:10:22
由于不允许导入,所以为每个月创建一个dict,其中包含一个空数组作为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]。记住要转换为ints。
发布于 2019-03-25 07:49:25
这看起来像是熊猫包裹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,可以在我的示例dataframe中使用以下代码:
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']]发布于 2019-03-25 07:46:36
尝试在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)然后,数据是一个字典列表,每行一行一行。
我认为这是一个好的开始,粘贴文件,如果你需要更多的帮助。
https://stackoverflow.com/questions/55333027
复制相似问题