如何使用 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
我正在编写一个程序,我想计算每行中的列数,因为每个文件都有不同的列数。这意味着我想检查是否有任何行缺少单元格,如果有,那么我想突出显示单元格编号。 我正在使用 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