Python 使用数据帧填充数据列表的For循环

Python 使用数据帧填充数据列表的For循环,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在编写一些使用.csv文件绘制时间序列的代码,但我必须绘制几年(准确地说是2000年到2019年)及其相应的月份。我尝试以这种方式使用for循环: import pandas as pd import matplotlib.pyplot as plt c1 = pd.read_csv('D:/file.csv') c1['Date'] = pd.to_datetime(c1['Date'], format = '%m/%d/%Y') c1.set_index('Date', inplace=

我正在编写一些使用.csv文件绘制时间序列的代码,但我必须绘制几年(准确地说是2000年到2019年)及其相应的月份。我尝试以这种方式使用for循环:

import pandas as pd
import matplotlib.pyplot as plt
c1 = pd.read_csv('D:/file.csv')
c1['Date'] = pd.to_datetime(c1['Date'], format = '%m/%d/%Y')
c1.set_index('Date', inplace=True)

year = 2000

for j in range(12):
    sets = list()
    data = c1['%s-%0d'%(year, j+1)]['Moisture']
    sets.append(data)
我想以这样的方式结束:

sets = [c1['2000-01']['Moisture'], c1['2000-02']['Moisture'], ... , c1['2000-12']['Moisture']]
因此,我可以用以下代码绘制我的数字:

for j in range(12):
    sets = list()
    data = c1['%s-%0d'%(year, j+1)]['Moisture']
    sets.append(data)

    plt.figure()
    plt.plot(sets[j], 'black')
    plt.title('Layer 1 (0 cm - 7 cm)')
    plt.xlabel(str(year))
    plt.ylabel(r'Moisture $(m^{3} / m^3)$')
    plt.xticks([])
    plt.savefig('D:/randomlocation.png')
我已经试过了,但每次都显示出来

IndexError: list index out of range

因此,我认为它只是在列表中添加了一项。如何解决这个问题?

首先,每次循环迭代时,您都会覆盖
集合
set=list()
应移到for循环的外部

此外,在这里使用
i
而不是
j
可能是问题的一部分


plt.plot(设置[i],'black')

您能否分享一个数据帧示例以及预期输出?请提供预期输出。显示中间结果与您预期的不同之处。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。特别是,我们需要完整的错误消息和违规值的跟踪。这些值是否在
c1['2000-01']
字典中?为什么你需要使用链式作业
c1['2000-01']['weather']
?我已经用下面的答案解决了这个问题,这只是一个理解for循环的问题,我很抱歉
[I]
[j]
是一个打字错误,我的错。是的,这只是覆盖问题,谢谢。