社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

根据for循环中df的长度,重复数组中的行n次不起作用。错误“numpy.ndarray”对象不可调用(python)

Lau • 6 年前 • 1948 次点击  

好吧,我找过其他类似的问题,但我就是没法解决。 1)我有一个读取多个文件的for循环 2)对于每个文件,我需要其长度(t) 3)然后我需要df重复(t)次的值。

如果我不使用for循环,这很好,但是通过在循环中使用相同的脚本,我得到的错误是“numpy.ndarray”对象不可调用。我认为这是因为我把np.repeat当作一个函数来处理,但我不知道如何修复它。关于如何解决这个问题有什么好建议吗?

result_files = '/Users/result_files' 
reservoirs = ['AA','AB', etc.]

for res in reservoirs:
    res_files = pd.read_csv('{}/{}_storage.csv'.format(result_files,res), index_col=0, skiprows=1, parse_dates=True)

    T = len(res_files)

    ### Df of number of days per month x length of reservoir's data 
    df = pd.DataFrame.from_dict(df, orient='index')
    df = df.transpose()   
    df = pd.DataFrame(np.repeat(df.values,T,axis=0))

误差

  File "/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py", line 974, in from_dict
    if isinstance(list(data.values())[0], (Series, dict)):

TypeError: 'numpy.ndarray' object is not callable

例如,假设我的df具有以下值:

df= ( 1.3, 1.5, 1.7)

我的文件的长度是3,我的输出应该是这样的

T = 3


[Out]
df= ( 1.3, 1.5, 1.7
      1.3, 1.5, 1.7
      1.3, 1.5, 1.7. )
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31473
 
1948 次点击  
文章 [ 1 ]  |  最新文章 6 年前
hpaulj
Reply   •   1 楼
hpaulj    6 年前
 File "/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py", line 974, in from_dict
    if isinstance(list(data.values())[0], (Series, dict)):

TypeError: 'numpy.ndarray' object is not callable

如果 data 是一个数据帧,它将产生此错误,因为 value 是数组,而不是函数。见DF文件:

DataFrame.values
Return a Numpy representation of the DataFrame.

什么 from_dict Expires是一个字典,它确实有一个 values 方法。

pd.DataFrame.from_dict(df, orient='index')

因此,如果 df 创建为字典,但在下一个循环失败时 东风 是一个数据帧(从最后一个循环结束)。