【问题标题】:I get an error when I try to construct a pandas panel尝试构建 pandas 面板时出现错误
【发布时间】:2015-12-06 23:41:18
【问题描述】:

好的,我正在尝试构建一个 pandas 面板。我的输入数据是“2015 年 8 月全国证券交易所指数 (NIFTY) 中的所有股票价格”。大约有 1500 支顶级股票乘以(开盘价、最高价、最低价、收盘价、成交量)乘以可用数据的天数(大约 21 天)。

我的代码是:

for files in glob.glob('*.txt')
   for data in files:
      frame = pd.read_csv(data)
      df = pd.append(frame)
matrix3d = pd.append(df)
matrix3d.head(10)

我收到一个错误...文件 E 不存在

【问题讨论】:

  • 能否把data中的文件名打印出来看看是否正确。

标签: python pandas panel


【解决方案1】:

glob.glob() 返回文件名列表。示例 -

>>> glob.glob('*.txt')
['a.txt', 'abcd.txt']

因此,在您的代码中 files 实际上是每个 *.txt 的完整文件名。当你再次迭代它时,你实际上是在迭代每个字符。喜欢-

>>> for file in glob.glob('a.txt'):
...     for data in file:
...             print(data)
...
a
.
t
x
t

然后您尝试调用pd.read_csv()。除非您在当前工作目录中有该名称的 csv,否则它将无法正常工作。

我猜第二次迭代 data 不需要。你应该简单地尝试 -

df = pd.DataFrame()
for files in glob.glob('*.txt')
    frame = pd.read_csv(data)
    df = df.append(frame)

请注意我将它从 pd.append() 更改为 df.append() ,在 pandas 模块中没有直接附加功能,只有 pandas.DataFrame.append() (或 series.append() ,但我猜你可能想要 df.append 为你案子) 。

【讨论】:

  • 很高兴它对你有用。我还想请求您通过单击答案左侧的勾号来接受答案。这将对社区有所帮助。
猜你喜欢
  • 2021-03-05
  • 1970-01-01
  • 2023-03-07
  • 2012-01-22
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 2020-11-16
  • 2014-05-15
相关资源
最近更新 更多