列名无效- PythonPandas

nkhmeac6  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(317)

我是一个编程或机器学习的初学者,我的代码很难处理。我想从一个有时也包含整数或浮点数的列(这是一个电子邮件交换的列)中删除随机单词,然后要求BERT添加匹配的单词,以进行数据扩充,但我的代码有问题。

import pandas as pd
import nltk
from nltk.tokenize import word_tokenize

# lire les données de la colonne Excel en utilisant pandas
df = pd.read_excel("Output_Summarization/OUTPUT_ocr_OPENAIGOOD.xlsx", usecols="Open_AI_Text")

# itérer sur chaque ligne de la colonne
for index, row in df.iterrows():
  # tokeniser le texte de la ligne en mots individuels
  words = word_tokenize(row["Open_AI_Text"])

  # choisir un mot au hasard à enlever
  word_to_remove = random.choice(words)

  # enlever le mot du texte
  new_text = row["Open_AI_Text"].replace(word_to_remove, "")

  # mettre à jour la ligne dans le DataFrame
  df.at[index, "Open_AI_Text"] = new_text

# enregistrer le DataFrame mis à jour dans un nouveau fichier Excel
df.to_excel("Texte_Trou.xlsx", index=False)

我100%确定它是我的列名,因为如果我写df['Open_AI_Text'],我可以使用它。

ValueError                                Traceback (most recent call last)
<ipython-input-44-e9ccdb1ab0b2> in <module>
      4 
      5 # lire les données de la colonne Excel en utilisant pandas
----> 6 df = pd.read_excel("Output_Summarization/OUTPUT_ocr_OPENAIGOOD.xlsx", usecols="Open_AI_Text")
      7 
      8 # itérer sur chaque ligne de la colonne

/usr/local/lib64/python3.6/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    294                 )
    295                 warnings.warn(msg, FutureWarning, stacklevel=stacklevel)
--> 296             return func(*args, **kwargs)
    297 
    298         return wrapper

/usr/local/lib64/python3.6/site-packages/pandas/io/excel/_base.py in read_excel(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols)
    332         skipfooter=skipfooter,
    333         convert_float=convert_float,
--> 334         mangle_dupe_cols=mangle_dupe_cols,
    335     )
    336 

/usr/local/lib64/python3.6/site-packages/pandas/io/excel/_base.py in parse(self, sheet_name, header, names, index_col, usecols, squeeze, converters, true_values, false_values, skiprows, nrows, na_values, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols, **kwds)
    924             convert_float=convert_float,
    925             mangle_dupe_cols=mangle_dupe_cols,
--> 926             **kwds,
    927         )
    928 

/usr/local/lib64/python3.6/site-packages/pandas/io/excel/_base.py in parse(self, sheet_name, header, names, index_col, usecols, squeeze, dtype, true_values, false_values, skiprows, nrows, na_values, verbose, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols, **kwds)
    442 
    443             data = self.get_sheet_data(sheet, convert_float)
--> 444             usecols = _maybe_convert_usecols(usecols)
    445 
    446             if not data:

/usr/local/lib64/python3.6/site-packages/pandas/io/excel/_util.py in _maybe_convert_usecols(usecols)
    146 
    147     if isinstance(usecols, str):
--> 148         return _range2cols(usecols)
    149 
    150     return usecols

/usr/local/lib64/python3.6/site-packages/pandas/io/excel/_util.py in _range2cols(areas)
    117             cols.extend(range(_excel2num(rng[0]), _excel2num(rng[1]) + 1))
    118         else:
--> 119             cols.append(_excel2num(rng))
    120 
    121     return cols

/usr/local/lib64/python3.6/site-packages/pandas/io/excel/_util.py in _excel2num(x)
     82 
     83         if cp < ord("A") or cp > ord("Z"):
---> 84             raise ValueError(f"Invalid column name: {x}")
     85 
     86         index = index * 26 + cp - ord("A") + 1

ValueError: Invalid column name: Open_AI_Text

我试着只使用df[Open_AI_Text]作为df,但是出现了这个问题:

AttributeError                            Traceback (most recent call last)
<ipython-input-48-17e13b68c999> in <module>
      9 
     10 # itérer sur chaque ligne de la colonne
---> 11 for index, row in df.iterrows():
     12   # tokeniser le texte de la ligne en mots individuels
     13   words = word_tokenize(row["Open_AI_Text"])

/usr/local/lib64/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
   5137             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5138                 return self[name]
-> 5139             return object.__getattribute__(self, name)
   5140 
   5141     def __setattr__(self, name: str, value) -> None:

AttributeError: 'Series' object has no attribute 'iterrows'

再次抱歉,我是个实习生

fnx2tebb

fnx2tebb1#

您为usecols属性使用了错误类型的值。请检查documentation
usecols:字符串,类似列表,或可调用,默认为None
如果为None,则分析所有列。
如果为str,则表示Excel列字母和列范围的逗号分隔列表(例如“A:E”或“A,C,E:F”)。范围包括两端。
如果list of int,则指示要分析的列号列表(0索引)。
如果是字符串列表,则指示要分析的列名列表。
如果是可调用的,则根据它计算每个列名,如果可调用对象返回True,则分析该列。
根据上述行为返回列的子集。

相关问题