我所拥有的是一个包含大量数据的导入CSV文件中的列表(大列表)。它是一整年的天气数据。如此12个月的数据。月表示为1-12: 请看图片:
请注意,我不能导入任何模块!
如您所见,每个索引中年份之后的数字是月份(例如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...")
答案 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
。