簡體   English   中英

Pandas 枚舉列意外行為

[英]Pandas enumerate columns unexpected behavior

我正在使用 python 從一些帶有表格的 PDF 中提取表格。 然后將每個表轉換為 Pandas DataFrame,我必須對它們進行一些分析。 我想迭代每一列以查看它們是否包含特定的字符串,但我注意到一個特定的 df 出現意外行為(至少我無法理解發生了什么)。

這是使用 df.columns 獲得的df.columns的列( df是 DataFrame 的名稱):

 Index(['cognome:xxxxnome:xxxxxprovenienza: esterno\r\rcodice fiscale: xxxxx\rdata valutazione neuropsicologica: 25/03/2021\rdata di nascita: 08/09/1955\retà (anni compiuti): 65\rsesso: m\rnumero anni di scolarità: 13', 'unnamed: 0'], dtype='object')

所以,從我在這里看到的,第 0 列的名稱應該是

'cognome:xxxxnome:xxxxxprovenienza: esterno\r\rcodice fiscale: xxxxx\rdata valutazione neuropsicologica: 25/03/2021\rdata di nascita: 08/09/1955\retà (anni compiuti): 65\rsesso: m\rnumero anni di scolarità: 13'

我不明白的是,如果我嘗試遍歷df的列,會發生以下情況:

for i, col in enumerate(list(df.columns)):
    print(f'{i}-th loop, column name = {col}')

Output:

 numero anni di scolarità: 13ogica: 25/03/2021xxxxprovenienza: esterno 1-th loop, column name = unnamed: 0

所以這是我的問題:

  1. 為什么不打印第 0 個循環的索引?
  2. 為什么第 0 個循環的col打印值與df.columns的第 0 個元素不同?

有關 df 的更多詳細信息:

 <class 'pandas.core.frame.DataFrame'> 
 Int64Index: 0 entries 
 Data columns (total 2 columns):  
 #   Column                                
 Non-Null Count  Dtype  
 ---  ------
 --------------  -----   
 numero anni di scolarità: 13  0 non-null      float64  
 1   unnamed: 0                                               
 0 non-null      float64 
 dtypes: float64(2) 
 memory usage: 0.0 bytes

我正在使用帶有 Pandas 版本 1.2.0 的 Jupyter Notebbok

問題在於您的列名已滿的回車 \r 。 打印字符串時,每次看到 \r 時,都會從行首開始,逐個字符地覆蓋。 所以索引 0 被打印出來,但隨后被覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM