gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:11:48 26 4
gpt4 key购买 nike

好吧,我已经寻找了其他类似的问题,但我就是无法让它发挥作用。1)我有一个读取多个文件的for循环2)对于每个文件,我需要它的长度(T)3)然后我需要重复(T)次的 df 值。

如果我不使用 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. )

最佳答案

 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 是数据帧(从末尾开始)时,您的代码将在下一个循环中失败最后一个循环)。

关于python - 根据 for 循环中 df 的长度重复数组的行 N 次不起作用。错误 'numpy.ndarray' 对象不可调用”(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com