Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用密钥保存数据帧_Python_Pandas_Csv - Fatal编程技术网

Python 使用密钥保存数据帧

Python 使用密钥保存数据帧,python,pandas,csv,Python,Pandas,Csv,我正在尝试解析csv文件并打印某些时间序列图 关于csv文件: csv文件包含大量数据,我需要根据for循环中的id解析其中的某些部分。 csv文件如下所示: 关于我的代码: 所以,在看到csv文件的一个示例后,我将告诉您我的目标是什么。我需要为csv文件中出现的每个不同ID保存一个数据框,其中包含以下所有列,如特定ID的名称、日期和确认影响。此文件中约有12个ID,因此,我尝试使用for循环为每个ID保存不同的数据帧,然后执行一些绘制时间序列图的操作 我的代码: 运行完这段代码后,我将获取ID

我正在尝试解析csv文件并打印某些时间序列图

关于csv文件: csv文件包含大量数据,我需要根据for循环中的id解析其中的某些部分。 csv文件如下所示:

关于我的代码: 所以,在看到csv文件的一个示例后,我将告诉您我的目标是什么。我需要为csv文件中出现的每个不同ID保存一个数据框,其中包含以下所有列,如特定ID的
名称
日期
确认影响
。此文件中约有12个ID,因此,我尝试使用for循环为每个ID保存不同的数据帧,然后执行一些绘制时间序列图的操作

我的代码:

运行完这段代码后,我将获取ID=DE2的结果及其图表。但是在DE2之后,我的代码崩溃了,我想看到的以下数据帧都没有出现

错误:

Traceback (most recent call last):
  File "C:\Users\Deray\PycharmProjects\covid-19\venv\lib\site-packages\pandas\core\indexes\base.py", line 3080, in get_loc
    return self._engine.get_loc(casted_key)
  File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\index.pyx", line 96, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\index.pyx", line 120, in pandas._libs.index.IndexEngine._get_loc_duplicates
KeyError: 'DE1'

感谢您的时间,有什么想法吗?

问题是您将关键过滤数据帧分配给“for”循环中的“df”,从而覆盖了原始数据帧。要修复此问题,需要将过滤后的数据帧分配给另一个变量。尝试:

for key in id_array:
    df_temp = df.loc[key]
    print(key)
    df_temp.plot()
    plt.show()

您在第一次迭代中覆盖了df

df=df.loc[key]
如果需要,可以将原始数据保存到其他对象

更好的方法是使用ItErrors()
或者itertuples()

它说没有ID为
'DE1'
的行,它是否存在于
df.index.unique()
中?谢谢!我将尽快阅读有关iterrows的文章。谢谢@Calleniah为我工作!
for key in id_array:
    df_temp = df.loc[key]
    print(key)
    df_temp.plot()
    plt.show()
df=df.loc[key]