Python 参数值错误:传递值的形状

Python 参数值错误:传递值的形状,python,pandas,Python,Pandas,在下面的代码中,我遍历图像列表,并计算给定数字的频率,在本例中为0和1。然后我将其写入csv。当我只写出频率列表时,这很好,但当我尝试添加文件名时,会出现错误: ValueError: Shape of passed values is (1, 2), indices imply (2, 2) 当我试着写出一个频率列表(一个数)和文件名时,效果很好 我的代码如下: import os from osgeo import gdal import pandas as pd import numpy

在下面的代码中,我遍历图像列表,并计算给定数字的频率,在本例中为0和1。然后我将其写入csv。当我只写出频率列表时,这很好,但当我尝试添加文件名时,会出现错误:

ValueError: Shape of passed values is (1, 2), indices imply (2, 2)
当我试着写出一个频率列表(一个数)和文件名时,效果很好

我的代码如下:

import os
from osgeo import gdal
import pandas as pd
import numpy as np

# Input directory to the .kea files
InDir = "inDirectory"

# Make a list of the files
files = [file for file in os.listdir(InDir) if file.endswith('.kea')]

# Create empty list to store the counts
ZeroValues = []
OneValues = []

# Iterate through each kea file and open it
for file in files:
    print('opening ' + file)
    # Open file
    ds = gdal.Open(os.path.join(InDir, file))
    # Specify the image band
    band = ds.GetRasterBand(1)
    # Read the pixel values as an array
    arr = band.ReadAsArray()
    # remove values that are not equal (!=) to 0 (no data)
    ZeroPixels = arr[arr==0]
    OnePixels = arr[arr==1]
    print('Number of 0 pixels = ' + str(len(ZeroPixels)))
    print('Number of 1 pixels = ' + str(len(OnePixels)))
    # Count the number of values in the array (length) and add to the list
    ZeroValues.append(len(ZeroPixels))
    OneValues.append(len(OnePixels))
    # Close file
    ds = Non

# Pandas datagram and out to csv
out = pd.DataFrame(ZeroValues, OneValues, files)
# Write the pandas dataframe to a csv
out.to_csv("out.csv", header=False, index=files)

Pandas认为您试图将
OneValues
文件
作为位置
索引
参数传递。看

尝试将字段包装在dict中:

import pandas as pd

ZeroValues = [2,3,4]
OneValues = [5,6,7]
files = ["A.kea","B.kea","C.kea"]

df = pd.DataFrame(dict(zero_vals=ZeroValues, one_vals=OneValues, fname=files))
输出:

   fname  one_vals  zero_vals
0  A.kea         5          2
1  B.kea         6          3
2  C.kea         7          4