python - 根据我的 df 在 for 循环中的长度重复数组的行 N 次不起作用。错误“numpy.ndarray”对象不可调用”(Python)
问题描述
好的,我一直在寻找其他类似的问题,但我无法让它发挥作用。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. )
解决方案
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
是数据帧(从最后一个循环结束)。
推荐阅读
- java - java中的Jasper报告上仅显示一次数据
- rust - 调用线程方法时如何解决“生命周期必须对静态生命周期有效”
- docker - docker:来自守护进程的错误响应:OCI 运行时创建失败:无法检索 OCI 运行时错误
- python - 以继承的形式向按钮添加属性 Odoo
- java - 如何在java中发送http get请求并获取特定字段
- javascript - jQuery - 遍历嵌套元素
- java - 变量值显示为空
- javascript - React Native - 子组件中的功能组件引用
- react-native - 如何获取存储在谷歌云平台存储桶上的图像?
- git - 使用 heroku 和/或 github 跟踪文件