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

2024-09-28 01:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我已经找了其他类似的问题,但我就是不能让它工作。 1) 我有一个for循环,可以读取多个文件 2) 对于每个文件,我需要它的长度(T) 3) 然后我需要df重复(T)次的值。你知道吗

如果我不使用for循环,那么这个方法很好用,但是通过在循环中使用相同的脚本,我得到的错误是'numpy.ndarray公司'对象不可调用。我相信是因为我在治疗np.重复作为一个函数,但我不知道如何修复它。有什么好的建议吗?你知道吗

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. )

Tags: 文件ofinnumpydffor错误np
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:16
 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期望的是一个字典,它确实有一个values方法。你知道吗

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

因此,如果df被创建为字典,那么您的代码将在第一次迭代中工作,但是当df是数据帧(从最后一个循环的末尾开始)时,在下一个循环中失败。你知道吗

相关问题 更多 >

    热门问题