我有一个带有参数的函数,可以接受pandas数据帧或数据帧的某些列。当我通过单个柱子时,形状是例如df.shape =(10,)因此尝试使用df.shape [1]获取列数会引发错误。
我通过使用三元语句找到了一个解决方案,但在两种情况下都有更简洁有效的方法来获取列数(当参数是一个包含多于一列的数据帧或一列/一列时切片的数据帧?)。
import pandas as pd
def number_of_cols(input):
return input.shape[1]
df=pd.DataFrame()
number_of_cols(df)
0 #good
df=pd.DataFrame({'A':[0,1,2],'B':['a','b','c']})
number_of_cols(df)
2 #good
number_of_cols(df['A'].shape[1]) #Throws an error
def number_of_cols(input):
return 1 if len(input.shape) == 1 else input.shape[1]
number_of_cols(df['A'].shape[1])
1 #good, but is there anything more concise?
答案 0 :(得分:0)
我会这样做:
def number_of_cols(input):
try:
return input.shape[1]
except IndexError:
return 1
用法:
In [63]: number_of_cols(df['A'])
Out[63]: 1
In [64]: number_of_cols(df)
Out[64]: 2