如何使用 Pandas Python 计算一行中的列数

How to count the number of columns in a row using Pandas Python

我正在编写一个程序,我想计算每行中的列数,因为每个文件都有不同的列数。这意味着我想检查是否有任何行缺少单元格,如果有,那么我想突出显示单元格编号。 我正在使用 pandas 来读取文件。我有多个 gzip 文件,其中包含另一个 CSV 文件。 我读取文件的代码:

#running this under loop
data = pd.read_csv(files,
    compression='gzip'
    on_bad_lines='warn'
    low_memory=False,
    sep=r'|',
    header=None,
    na_values=['NULL',' ','NaN'],
    keep_default_na = False
    )

我检查了 Whosebug,但没有与这种情况相关的答案。如果有人能在这里帮助我,我将非常高兴。

不确定我的解释是否正确,但如果您想计算一个循环中每个 pandas 数据帧的列数,有很多选项。

1) data.shape[1]
2) len(data.columns)
3) len(list(data))

这是一个最小的可重复性代码。将“data = pd.DataFrame(dict)”替换为“data = pd.read_csv(...)”

# Import Required Libraries
import pandas as pd
import numpy as np

# Create dictionaries for the dataframe
dict1 = {'Name': ['Anne', 'Bob', 'Carl'], 
         'Age': [22, 20, 22], 
         'Marks': [90, 84, 82]}

dict2 = {'Name': ['Dan', 'Ely', 'Fan'], 
         'Age': [52, 30, 12], 
         'Marks': [40, 54, 42]}

for i in [dict1, dict2]:
    # Read data
    data = pd.DataFrame(dict1)

    # Get columns
    shape = data.shape # (3,3)
    col = shape[1] # 3
  
    # Printing Number of columns
    print(f'Number of columns for file <>: {col}')

“这很好用,但在尝试了你的建议后,我得到了数据框中的总列数。我想打印每行包含的列数。例如: S.no Name 1 Adam 2 George 3 NULL 因此,第一行将打印 2,第二行将打印 2,但第三行将打印 1。"
– 拉莫克斯

以下是针对您的规范的更新答案

获取每行 non-nulls 的计数

data.apply(lambda x: x.count(), axis=1)

数据:

  A   B   C
0:  1   2   3
1:  2   nan nan
2:  nan nan nan

输出:

0:  3
1:  1
2:  0

将每行的计数 non-nulls 添加到数据帧中

data['count'] = data.apply(lambda x: x.count(), axis=1)

结果:

    A   B   C   count
0:  1   1   3   3
1:  2   nan nan 1
2:  nan nan nan 0