1

私はcsvファイルをデータフレームに読み込んでおり、データニトロを使用して、ユーザーがExcelセルの入力に基づいてデータを変更できるようにしています。これは、df 列のすべての値が NaN の場合を除いて、正常に機能します。最初のステップは、ユーザーがデータにアクセスしたいエンティティの UID を入力することです。csv は、UID をインデックスとして読み取られます。

これはコードです:

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データフレームインデックスにある「MP01」のUIDを使用してこれを実行すると、GMDesigセルのユーザー入力に関して複合エラーを受け取りました。で終わった

ValueError ['M' 'P' '0' '1'] インデックスに含まれていません。

Excel ファイルの CDesig_gm 列が値のない唯一の列であり、その結果、NaN の列としてデータ フレームに読み込まれることに気付きました。csv のセルの 1 つに無意味な値を追加してプログラムを再実行すると、正常に動作しました。

ここで何が起こっているのか、私は困惑しています。

ありがとう

4

1 に答える 1

1

列の値を変更しようとすると、TypeError が発生する場合があります。これをコードに追加します。

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 を読み込むとき、各列のデータ型を選択します。空白の列は float の列として読み込まれ、エントリの 1 つに文字列を書き込むと失敗します。

ジャンク データを入れると、列が数値であってはならないことをパンダに知らせるため、書き込みは成功します。)

于 2013-07-17T20:22:50.027 に答える