Python 使用数据帧填充数据列表的For循环
我正在编写一些使用.csv文件绘制时间序列的代码,但我必须绘制几年(准确地说是2000年到2019年)及其相应的月份。我尝试以这种方式使用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=
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]
是一个打字错误,我的错。是的,这只是覆盖问题,谢谢。