python-3.x - DataFrame中的for循环
问题描述
我有多个包含大量数据和 19 列的文件。我正在尝试多个 for 循环并将其设置为等于文件中的第一列、第二列等。
import numpy as np
import glob
import pandas as pd
#
lat=np.zeros(90)
long=np.zeros(180)
indat=np.zeros(19)
#
file_in = glob.glob('filenames*.dat').
for a in range(140):
for i in range (90):
for j in range (180):
df = pd.DataFrame()
for f in file_in:
cols = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] #there are nineteen columns
indat = df.append(pd.read_csv(f, delimiter='\\s+', header=None, usecols=cols, skiprows=4), ignore_index=True)
lat[i]=indat[0] # error here
long[j]=indat[1]
#updates some code here
if i >=70:
dens[a,j,i-70]=indat[2]
它给了我这个错误:
ValueError: setting an array element with a sequence.
更新:
indat
有 19 列,许多文件,但所有格式都是相同的。
样本indat
#columns
#0 1 2 3 ..... 19
-90 0 2e-12 #just some number
-90 2 3e-12 #just some number
-90 4 4e-12 #just some number
...
-90 360 1e-12 #just some number
-88 0 1e-11 #just some number
-88 2 2e-11 #just some number
-88 4 3e-11 #just some number
...
-88 360 4e-11 #just some number
...
90 0 2.5e-12 #just some number
90 2 3.5e-11 #just some number
90 4 4.5e-12 #just some number
...
90 360 1.5e-12 #just some number
编辑:我根据每个人的建议清理代码
import numpy as np
import glob
import pandas as pd
file_in = glob.glob('filenames*.dat').
df = pd.DataFrame()
for f in file_in:
cols = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
indat = pd.read_csv(f, delimiter='\\s+', header=None, usecols=cols, skiprows=4)
for a in range(140):
for i in range (90):
for j in range (180):
lat[i]=indat[0] # error here
long[j]=indat[1]
if i >=70:
dens[a,j,i-70]=indat[2]
解决方案
您尝试将列 ( pandas series
)分配给向量indat[0]
的元素numpy
lat[i]
另外,indat=np.zeros(19)
稍后将其覆盖为数据框的意义何在?
内容是indat[0]
什么?
这行代码
indat = df.append(pd.read_csv(f, delimiter='\\s+', header=None, usecols=cols, skiprows=4), ignore_index=True)
基本相同
indat = pd.read_csv(f, delimiter='\\s+', header=None, usecols=cols, skiprows=4)
因为df
从未改变,即它始终是一个空数据框
由于内容indat
未知,因此很难修复您的代码。如果你只是想让它运行没有错误,我建议写
lat[i] = indat[0].values[0] # take the first value of the vector
long[i] = indat[1].values[0] # take the first value of the vector
学习一些关于 Numpy 和 Pandas 的教程很好,因为如果没有一些基本的理解,它可能会非常混乱。
推荐阅读
- python-3.x - 对“r”(原始字符串字符)的功能感到困惑
- javascript - 如何过滤 mogodb 中的模式并使用过滤的数据重定向同一页面
- uwp - Unable to test Store trial mode for UWP app
- verilog - Verilog 中的 ALU:“无法绑定线/注册/内存”
- javascript - 如何访问并可能修改子 lit-element 组件的属性?
- reactjs - 在样式规则中找不到对 toHaveStyleRule 属性的反应测试
- swift - 如何检查 UIViewController 是否已经显示?
- c++ - 如何创建一个指针来调用我的成员函数?
- cassandra - 转型 Pentaho 水壶卡住了
- python - 将列添加到熊猫多索引数据框