Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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_Dataframe - Fatal编程技术网

Python 为什么在读取/加载保存的文件后,数据帧的形状会发生变化?

Python 为什么在读取/加载保存的文件后,数据帧的形状会发生变化?,python,pandas,dataframe,Python,Pandas,Dataframe,我希望我的代码能够完成以下任务: (1, 7) Year Month Day Ticker Type Quantity Value 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 (1, 8) Unnamed: 0 Year Month Day Ticker Type Quantity Value 0 0 0.0 0.0 0.0 0.0 0.0 0

我希望我的代码能够完成以下任务:

(1, 7)
   Year  Month  Day  Ticker  Type  Quantity  Value
0   0.0    0.0  0.0     0.0   0.0       0.0    0.0
(1, 8)
   Unnamed: 0  Year  Month  Day  Ticker  Type  Quantity  Value
0           0   0.0    0.0  0.0     0.0   0.0       0.0    0.0
  • 检查文件夹中是否有名为“分类账”的文件。这很有效
  • 如果没有,则创建一个文件。这很有效
  • 如果是,请读取文件,更新文件中的内容,并保存文件,以保持文件的形状。这不管用
我尝试了下面的代码:

import glob
import numpy as np
import os
import pandas as pd
from os import listdir


# DEFINE PATH, STATE SUFFIX OF FILE, AND GET NUMBER OF FILES ENDING WITH SUFFIX
path = r'ledger'
suff = r'.csv'
file = listdir(path)
file = [item for item in file if item.endswith(suff)]


# CHECK IF LEDGER IS AVAILABLE, AND IF NOT, CREATE ONE
if len(file) == 0:
    save = np.zeros([1, 7])
    save = pd.DataFrame(save, columns = ['Year', 'Month', 'Day', 'Ticker', 'Type', 'Quantity', 'Value'])
    print(save.shape)
    print(save)
    save.to_csv(os.path.join(path, r'ledger.csv'))
else:
    load = pd.read_csv(os.path.join(path, r'ledger.csv'))
    load = pd.DataFrame(load)
    print(load.shape)
    print(load)
如果文件不存在,打印功能将产生以下结果:

(1, 7)
   Year  Month  Day  Ticker  Type  Quantity  Value
0   0.0    0.0  0.0     0.0   0.0       0.0    0.0
(1, 8)
   Unnamed: 0  Year  Month  Day  Ticker  Type  Quantity  Value
0           0   0.0    0.0  0.0     0.0   0.0       0.0    0.0
但是,如果文件存在,则会读取该文件,并且打印功能会生成以下内容:

(1, 7)
   Year  Month  Day  Ticker  Type  Quantity  Value
0   0.0    0.0  0.0     0.0   0.0       0.0    0.0
(1, 8)
   Unnamed: 0  Year  Month  Day  Ticker  Type  Quantity  Value
0           0   0.0    0.0  0.0     0.0   0.0       0.0    0.0

我不确定我能做些什么来保持数据帧的大小不变。当作为数据帧加载时,原始文件的索引似乎正在添加。如果您有任何建议,我们将不胜感激。

我认为问题在于,当您写入文件时,您也会写入索引

save.to_csv(os.path.join(path, r'ledger.csv'), index = False)

这将阻止将索引写入文件。当您阅读此文件时,它应该有七列

我认为问题在于,当您写入文件时,您也会写入索引

save.to_csv(os.path.join(path, r'ledger.csv'), index = False)
这将阻止将索引写入文件。当您读取此文件时,它应该有七列