如何检索 Pandas 数据框中的列数?

     2023-03-11     67

关键词:

【中文标题】如何检索 Pandas 数据框中的列数?【英文标题】:How do I retrieve the number of columns in a Pandas data frame? 【发布时间】:2013-12-16 08:00:01 【问题描述】:

如何以编程方式检索 pandas 数据框中的列数?我希望得到类似的东西:

df.num_columns

【问题讨论】:

我正在寻找一种解决方案,该解决方案还考虑在 groupby 操作后变成(多)索引的列。我想出了len(df.axes[0].names)+df.shape[1],但它看起来远非最佳。有任何想法吗?现在没有一个现有的答案可以解决这个问题。 @jangorecki 不过,这与这个问题完全没有关系。如果事物位于 DataFrame 的索引中,则它们被视为一列。虽然这似乎有点武断的区别,但对于某些操作,pandas 以不同的方式对待索引值和列系列 very。无论如何,您可以在 groupby 时阻止使用as_index=False 创建MultiIndex @ALollz 不将它们视为列这一事实只是 pandas 的特性,来自 SQL、R 和其他技术的工程师会期望分组列是列,而不是属性。 @jangorecki 一种简单的方法是len(df.reset_index().columns),因为 reset_index 会将所有索引转换为列。但正如@Aloltz 所说,这确实是一个独特的问题。我建议只用适当的样本数据集提出一个新问题,并在此处为接受的答案提供赏金。 【参考方案1】:

像这样:

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 给出一个带有(n_rows, n_columns)的元组 @mkln 如果您发布 df.shape[1] 作为答案,我会 +1。这是使用 numpy 的更好方法,值得单独回答。 完成。 @PhilCooper 也许您可以解释为什么 df.shape 更好?我的猜测是它不调用函数,只是从内存中读取属性?【参考方案2】:

替代方案:

df.shape[1]

df.shape[0]是行数)

【讨论】:

+1 因为我喜欢鼓励使用 martix 类型语法来寻址 numpy 和 pandas 对象。 (df.shape 与 len(df.columns))。说实话,如果您查看 pandas 的形状描述符,它会调用 len(df.columns) 但 numpy 数组和矩阵将它们作为属性。最有效的矢量化操作可以使用常规的 python 语法来完成,而不是矢量化操作,并且几乎总是错误的(numba/jit 操作除外)【参考方案3】:

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

len(df.columns)

给出列数。

对于那些想要行数的人:

len(df.index)

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

df.shape

【讨论】:

不会len(df) 给你行吗? @PadraicCunningham pandas 有很多容易忘记的快捷方式,所以我宁愿忽略它们,而是使用主要逻辑来解决问题。有时你可能会牺牲处理速度,但我更看重我的编码时间和代码可读性,而不是几秒钟的处理时间。在这种特殊情况下:如果您知道可以使用 len(df.index) 计算行数,那么下次您需要列数时,自然会使用 len(df.columns)。【参考方案4】:

很惊讶我还没有看到这个,所以不用多说,这里是:

df.columns.size

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

local_df = pd.DataFrame(np.random.randint(1,12,size=(2,6)),columns =['a','b','c','d','e' ,'F']) 1. local_df.shape[1] --> Shape属性返回元组为(行&列)(0,1)。

    local_df.info() --> info 方法将返回有关数据框及其列的详细信息,例如列数、列的数据类型、 非空值计数,Data Frame 的内存使用情况

    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)

【讨论】:

【参考方案7】:

为了在您的总形状中包含行索引“列”的数量,我个人将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.size 来获得相同的结果,但这不会那么高效,因为我们暂时将新列插入索引并在获取列数之前创建新索引。

【讨论】:

【参考方案8】:
#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\s1[0-9]\s1column",s)
print(s)
phrase=pat.group(0)
value=re.findall(r'[0-9]+',phrase)[0]
print(int(value))

【讨论】:

【参考方案9】:
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]

【讨论】:

【参考方案10】:

这里是:

pandas excel 引擎:xlsxwriter

获取列数的几种方法:

len(df.columns) -> 28 df.shape[1] -> 28 在这里:df.shape = (592, 28) 相关 行数:df.shape[0] -> 592 df.columns.shape[0] -> 28 这里:df.columns.shape = (28,) df.columns.size -> 28

【讨论】:

【参考方案11】:

这对我有用 len(list(df))。

【讨论】:

点评来源: 嗨,这篇文章似乎没有为问题提供quality answer。请编辑您的答案并改进它,或者将其作为评论发布。 不要那样做。它会创建一个新列表,浪费内存和速度。

如何从 python pandas 中的另一个数据框中检索数据? [复制]

】如何从pythonpandas中的另一个数据框中检索数据?[复制]【英文标题】:Howdoretrievedatafromanotherdataframeinpythonpandas?[duplicate]【发布时间】:2018-01-1911:58:43【问题描述】:我有2张桌子:第一张桌子CoursePriceEnglish$250Chinese$300Math$500第二... 查看详情

如何从python中的pandas数据框中的列中提取关键字(字符串)

】如何从python中的pandas数据框中的列中提取关键字(字符串)【英文标题】:Howtoextractakeyword(string)fromacolumninpandasdataframeinpython【发布时间】:2019-06-2317:33:53【问题描述】:我有一个数据框df,它看起来像这样:idTypeagent_idcreated_at... 查看详情

如何判断 pandas 数据框中的列是不是为 datetime 类型?如何判断一列是不是为数字?

】如何判断pandas数据框中的列是不是为datetime类型?如何判断一列是不是为数字?【英文标题】:HowdoItellifacolumninapandasdataframeisoftypedatetime?HowdoItellifacolumnisnumerical?如何判断pandas数据框中的列是否为datetime类型?如何判断一列是否... 查看详情

Python Pandas 如何将 groupby 操作结果分配回父数据框中的列?

】PythonPandas如何将groupby操作结果分配回父数据框中的列?【英文标题】:PythonPandasHowtoassigngroupbyoperationresultsbacktocolumnsinparentdataframe?【发布时间】:2012-08-2509:45:42【问题描述】:我在IPython中有以下数据框,其中每一行都是一个... 查看详情

将 WPF Datagrid 中的数据检索到 List 中的列数不同

】将WPFDatagrid中的数据检索到List中的列数不同【英文标题】:RetrievingdatafromWPFDatagridintoaListdoesnothavethesamenumberofcolumns【发布时间】:2020-11-0705:40:30【问题描述】:我有一个问题,虽然我在这里搜索了很多但没有答案。我有2节课cla... 查看详情

沿着 pandas 数据框中的列进行高效的跨步切片

】沿着pandas数据框中的列进行高效的跨步切片【英文标题】:Efficientstridedslicingalongacolumninapandasdataframe【发布时间】:2014-09-0113:35:48【问题描述】:在pandas数据框列中,我想(有效地)在给定的增量偏移处按切片选择行。例如,i... 查看详情

对 pandas 数据框中的列使用 map()

】对pandas数据框中的列使用map()【英文标题】:Usingmap()forcolumnsinapandasdataframe【发布时间】:2017-07-2015:30:23【问题描述】:我的数据框中有一些列,我只想保留日期部分并删除时间部分。我已经列出了这些列:list_of_cols_to_change=[\'... 查看详情

使用 pandas 连接两个数据框中的不同列(并附加相似的列)

】使用pandas连接两个数据框中的不同列(并附加相似的列)【英文标题】:Concatenatedistinctcolumnsintwodataframesusingpandas(andappendsimilarcolumns)【发布时间】:2019-03-0723:19:51【问题描述】:我的问题与PandasMerge-Howtoavoidduplicatingcolumns密切相... 查看详情

像 Qlik 一样计算 pandas 数据框中的列中的唯一值?

】像Qlik一样计算pandas数据框中的列中的唯一值?【英文标题】:CountinguniquevaluesinacolumninpandasdataframelikeinQlik?【发布时间】:2018-01-2708:03:54【问题描述】:如果我有这样的表:df=pd.DataFrame(\'hID\':[101,102,103,101,102,104,105,101],\'dID\':[10,1... 查看详情

ipython notebook pandas max 允许的列数

】ipythonnotebookpandasmax允许的列数【英文标题】:ipythonnotebookpandasmaxallowablecolumns【发布时间】:2015-01-2515:32:21【问题描述】:我有一个包含十列的简单csv文件!当我在笔记本中设置以下选项并打印我的csv文件(在pandas数据框中)... 查看详情

如何同时对熊猫数据框中的列进行排序[重复]

】如何同时对熊猫数据框中的列进行排序[重复]【英文标题】:Howtosimultaneouslysortcolumnsinpandasdataframe[duplicate]【发布时间】:2019-01-1603:33:44【问题描述】:假设我想在Pandas中对一个数据框进行排序,我的数据框如下所示FirstNameLastNa... 查看详情

Pandas - 在数据框中的列内扩展嵌套的 json 数组

】Pandas-在数据框中的列内扩展嵌套的json数组【英文标题】:Pandas-expandnestedjsonarraywithincolumnindataframe【发布时间】:2018-05-2516:52:27【问题描述】:我有一个json数据(来自mongodb),其中包含数千条记录(因此是一个json对象的数组/... 查看详情

如何使用熊猫数据框中的列标记气泡图/散点图?

】如何使用熊猫数据框中的列标记气泡图/散点图?【英文标题】:Howtolabelbubblechart/scatterplotwithcolumnfrompandasdataframe?【发布时间】:2017-05-1918:24:48【问题描述】:我正在尝试标记我从matplotlib创建的散点图/气泡图,其中包含来自pan... 查看详情

将数组和元组元素转换为 Pandas 数据框中的列 [重复]

】将数组和元组元素转换为Pandas数据框中的列[重复]【英文标题】:ConvertarrayandtupleelementstocolumnsinaPandasdataframe[duplicate]【发布时间】:2019-08-1414:14:28【问题描述】:我有一个看起来像这样的Pandas数据框(两行示例):cadd_scores_vecf... 查看详情

如何将相同的列数组分配给 Pandas 中的多个数据框?

】如何将相同的列数组分配给Pandas中的多个数据框?【英文标题】:HowtoassignthesamearrayofcolumnstomultipledataframesinPandas?【发布时间】:2019-07-0812:20:49【问题描述】:我有9个数据集。在任何2个给定的数据集之间,它们将共享大约60-80%... 查看详情

有啥方法可以在 pyspark 数据框中找到包含数据的列数

】有啥方法可以在pyspark数据框中找到包含数据的列数【英文标题】:Isthereanymethodtofindnumberofcolumnshavingdatainpysparkdataframe有什么方法可以在pyspark数据框中找到包含数据的列数【发布时间】:2020-01-1912:51:34【问题描述】:我有一个... 查看详情

如果所有行的列中只有一个值,则折叠 Pandas 数据框中的行

】如果所有行的列中只有一个值,则折叠Pandas数据框中的行【英文标题】:CollapsingrowsinaPandasdataframeifallrowshaveonlyonevalueintheircolumns【发布时间】:2017-11-0307:36:58【问题描述】:我有关注DFcol1|col2|col3|col4|col5|col60-|15.0|-|-|-|-1-|-|-|-|-|U... 查看详情

计算由另一列值分组的列值在 pandas 数据框中的共现

】计算由另一列值分组的列值在pandas数据框中的共现【英文标题】:Computeco-occurencesinpandasdataframeforcolumnvaluesgroupedbyanothercolumnvalues【发布时间】:2021-06-0705:55:41【问题描述】:问题我在Python3.7.7上使用Pandas。我想计算由另一个变... 查看详情