如何以编程方式检索pandas数据框架中的列数?我希望是这样的:

df.num_columns

像这样:

import pandas as pd
df = pd.DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

len(df.columns)
3

选择:

df.shape[1]

(df。形状[0]是行数)


如果保存数据帧的变量叫做df,那么:

len(df.columns)

给出列数。

对于想知道行数的同学

len(df.index)

对于包含行数和列数的元组:

df.shape

这为我工作len(list(df))。


Df.info()函数会给你如下所示的结果。 如果您正在使用Pandas的read_csv方法,不带sep参数或sep带“,”。

raw_data = pd.read_csv("a1:\aa2/aaa3/data.csv")
raw_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5144 entries, 0 to 5143
Columns: 145 entries, R_fighter to R_age

有多个选项来获取列号和列信息,如: 让我们检查一下。

local_df = pd.DataFrame (np.random.randint(1、12、大小=(2,6)),列= [a, b, c, d, e, f)) 1. local_df。形状属性返回元组为(row & columns)(0,1)。

local_df.info()——> info方法将返回关于数据帧及其列的详细信息,例如列数,列的数据类型, 不是空值计数,内存使用数据帧 Len (local_df.columns)—> columns属性将返回数据帧列的索引对象,Len函数将返回可用列的总数。 Local_df.head(0)——参数为0的> head方法将返回df的第一行,实际上它只是标题。

假设列数不超过10。循环的乐趣: li_count = 0 对于local_df中的x: Li_count = Li_count + 1 打印(li_count)


很惊讶我还没见过这个,所以话不多说,下面是:

df.columns.size


为了在你的总形状中包含行索引“列”的数量,我个人会将df.columns.size与属性pd.Index.nlevels/pd.MultiIndex.nlevels加在一起:

设置虚拟数据

import pandas as pd

flat_index = pd.Index([0, 1, 2])
multi_index = pd.MultiIndex.from_tuples([("a", 1), ("a", 2), ("b", 1), names=["letter", "id"])

columns = ["cat", "dog", "fish"]

data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat_df = pd.DataFrame(data, index=flat_index, columns=columns)
multi_df = pd.DataFrame(data, index=multi_index, columns=columns)

# Show data
# -----------------
# 3 columns, 4 including the index
print(flat_df)
    cat  dog  fish
id                
0     1    2     3
1     4    5     6
2     7    8     9

# -----------------
# 3 columns, 5 including the index
print(multi_df)
           cat  dog  fish
letter id                
a      1     1    2     3
       2     4    5     6
b      1     7    8     9

将我们的过程写成函数:

def total_ncols(df, include_index=False):
    ncols = df.columns.size
    if include_index is True:
        ncols += df.index.nlevels
    return ncols

print("Ignore the index:")
print(total_ncols(flat_df), total_ncols(multi_df))

print("Include the index:")
print(total_ncols(flat_df, include_index=True), total_ncols(multi_df, include_index=True))

这个打印:

Ignore the index:
3 3

Include the index:
4 5

如果你只想包含指标的数量如果指标是pd。MultiIndex,然后你可以在定义的函数中加入isinstance检查。

作为替代,您可以使用df.reset_index().columns。大小来实现相同的结果,但这不会有同样的性能,因为我们临时插入新列到索引中,并在获得列数之前创建一个新索引。


#use a regular expression to parse the column count
#https://docs.python.org/3/library/re.html

buffer = io.StringIO()
df.info(buf=buffer)
s = buffer.getvalue()
pat=re.search(r"total\s{1}[0-9]\s{1}column",s)
print(s)
phrase=pat.group(0)
value=re.findall(r'[0-9]+',phrase)[0]
print(int(value))

import pandas as pd
df = pd.DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})


print(len(list(df.iterrows())))

给出行长度

3

[Program finished]

这里是:

熊猫 Excel引擎:xlsxwriter

获得列数的几种方法:

Len (df.columns) -> 28 df。形状[1]-> : df。形状= (592,28) 相关的 行数:df。形状[0]-> 592 df.columns。形状[0]-> 这里:df.columns.shape = (28,) Df.columns.size ->