pandas TypeError:'DataFrame'对象在使用`df = DataFrame()`时不可调用

xzv2uavs  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个Streamlit应用程序,它使用Pandas的框架来显示Altair中的图形。
我已经用尽了最可能的原因,但我仍然得到以下错误。
一开始,错误出现在我的代码中:

File "/mnt/c/Users/xxx/Documents/xxx/deps/charts/charts.py", line 131, in show_financial_metrics_competitors_chart
    combined_df: pd.DataFrame = pd.DataFrame()
TypeError: 'DataFrame' object is not callable

字符串
为了解决这个问题,我将combined_df: pd.DataFrame = pd.DataFrame()更改为combined_df = None,尽管前者似乎是有效的语法。
错误消失,直到依赖库显示错误:

TypeError: 'DataFrame' object is not callable
...
  File "/mnt/c/Users/xxx/Documents/xxx/env/lib/python3.9/site-packages/pandas/io/formats/style_render.py", line 1957, in Tooltips
    tooltips: DataFrame = DataFrame(),


我花了几天时间想找出根本原因。我试过了:

  • 降级到Python 3.8->相同问题
  • 升级到Python 10->相同的问题
  • 检查源数据是否有效,填充DataFrames ->可以确认数据最终填充了这些DataFrames
  • 删除env/并重新安装requirements.txt ->对Python版本中的每一次更改都这样做,而且还不止一次

以下是我的关键依赖版本:

  • Python 3.9.2
  • pandas==2.0.3
  • 流灯== 1.29
  • numpy==1.25.2
  • matplotlib==3.7.2

鉴于最新的错误,我认为这不是我的代码,而是某个版本的依赖项,这是根本原因。最奇怪的是,我的Python或deps版本没有改变,这是从上周开始发生的。

r8uurelv

r8uurelv1#

阅读文档,我认为你必须提供初始数据才能使用DataFrame():
沿着数据,你可以选择性地传递index(行标签)和columns(列标签)参数。如果你传递一个index和/或columns,你保证了结果DataFrame的index和/或columns。因此,一个Series的dict加上一个特定的index将丢弃所有与传递的index不匹配的数据。
尝试先创建数据字典,然后调用类。

d = {
     "one": pd.Series([1.0, 2.0, 3.0], index=["a", "b", "c"]),
     "two": pd.Series([1.0, 2.0, 3.0, 4.0], index=["a", "b", "c", "d"]),
}

df = pd.DataFrame(d)

字符串
来源:Pandas网

相关问题