Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 缺少值的数据帧列赢得';不接受输入_Python_Csv_Pandas_Datanitro - Fatal编程技术网

Python 缺少值的数据帧列赢得';不接受输入

Python 缺少值的数据帧列赢得';不接受输入,python,csv,pandas,datanitro,Python,Csv,Pandas,Datanitro,我将csv文件读入数据框,然后使用data nitro允许用户根据excel单元格中的输入修改数据。除了df列中的每个值都是NaN之外,这一切都很好。第一步是用户输入他希望访问其数据的实体的UID。以UID作为索引读取csv 代码如下: class InterAction: def __init__(self) : self.PD_CL = pd.read_csv(r"C:\Users\rcreedon\Desktop\DataInProg\ContactList.csv

我将csv文件读入数据框,然后使用data nitro允许用户根据excel单元格中的输入修改数据。除了df列中的每个值都是NaN之外,这一切都很好。第一步是用户输入他希望访问其数据的实体的UID。以UID作为索引读取csv

代码如下:

class InterAction:
    def __init__(self) :
        self.PD_CL = pd.read_csv(r"C:\Users\rcreedon\Desktop\DataInProg\ContactList.csv", index_col = 'UID')

    def CheckCL_UID(self):
         self.UID = str(CellVal)
         if self.UID in self.PD_CL.index.values:
             return 'True'
         else:
             return "ERROR, the Factory Code you have entered is not in the Contact List"

    def UpdateContactDetails(self, Cell_GMNum, Cell_CNum, Cell_GMNam, Cell_CNam, Cell_GMDesig, Cell_CDesig):


        if not Cell_GMNum.is_empty():
             self.PD_CL['Cnum_gm'][self.UID] = str(Cell_GMNum.value)

        if not Cell_CNum.is_empty():
             self.PD_CL['Cnum_upd'][self.UID] = str(Cell_CNum.value)

        if not Cell_GMNam.is_empty():
             self.PD_CL['Cnam_gm'][self.UID] = str(Cell_GMNam.value)

        if not Cell_CNam.is_empty():
             self.PD_CL['Cnam_upd'][self.UID] = str(Cell_CNam.value)

        if not Cell_GMDesig.is_empty():
            self.PD_CL['Cdesig_gm'][self.UID] = str(Cell_GMDesig.value)

Inter = InterAction()
Cell("InputSheet", 5, 2).value = Inter.CheckCL_UID()
Inter.UpdateContactDetails(Cell("InputSheet", 3, 7), Cell("InputSheet",4, 7), Cell("InputSheet",5, 7), Cell("InputSheet",6, 7), Cell("InputSheet", 7, 7), Cell("InputSheet",8, 7))
当我运行此命令时,csv数据帧索引中的UID为“MP01”,我收到了一个与GMDesig单元格中的用户输入有关的复合错误。结果是

索引中不包含ValueError['M''p''0''1']

我注意到excel文件中的CDesig_gm列是唯一一个没有值的列,因此被作为NAN列读取到数据框中。当我在csv中的一个单元格中添加一个无意义的值并重新运行程序时,它工作得很好

这里发生了什么事,我被难住了


谢谢

当您试图更改列值时,可能会出现类型错误。将此添加到您的代码中:

if not Cell_GMDesig.is_empty():
        self.PD_CL['Cdesig_gm'] = self.PD_CL['Cdesig_gm'].astype(str)
        # cast to string first
        self.PD_CL['Cdesig_gm'][self.UID] = str(Cell_GMDesig.value)
(更多详细信息:当Pandas读入CSV时,它会为每一列选择一个数据类型。空白列作为一列浮点读入,将字符串写入其中一个条目将失败


输入垃圾数据让pandas知道列不应该是数字的,因此写入成功。)

当您试图更改列值时,可能会遇到类型错误。将此添加到您的代码中:

if not Cell_GMDesig.is_empty():
        self.PD_CL['Cdesig_gm'] = self.PD_CL['Cdesig_gm'].astype(str)
        # cast to string first
        self.PD_CL['Cdesig_gm'][self.UID] = str(Cell_GMDesig.value)
(更多详细信息:当Pandas读入CSV时,它会为每一列选择一个数据类型。空白列作为一列浮点读入,将字符串写入其中一个条目将失败


输入垃圾数据让Panda知道列不应该是数字的,因此写入成功。)

谢谢Ben,你认为在我读取csv时,将每个应该是字符串的列声明为字符串会更好吗?事实上,当我将csv读给熊猫时,任何/所有列都可能是空的。是的,事实上,将整个数据框声明为字符串数据似乎可以实现self.PD_CL=self.PD_CL.astype(str)谢谢Ben,你认为在我读csv时将每个应该是字符串的列声明为字符串会更好吗?事实上,当我将csv读取到pandas时,任何/所有列都可能为空。是的,事实上,将整个数据帧声明为字符串数据似乎可以实现self.PD_CL=self.PD_CL.astype(str)的技巧