示例问题
假设我必须编写一个函数来返回数据表对象的第一列,但我事先不知道该对象是 numpy 2D 数组还是 pandas 2D 数据帧。
到目前为止已尝试过
以下函数适用于 numpy 数组,但不适用于 pandas 数据帧:
def get_first_column(array_or_dataframe):
return array_or_dataframe[:, 0]
以下函数适用于 pandas 数据帧,但不适用于 numpy 数组:
def get_first_column(array_or_dataframe):
return array_or_dataframe.iloc[:, 0]
摘要
是否可以编写一个同时适用于 numpy 数组和 pandas 数据帧的列切片表达式?
最佳答案
选项 1
np.asarray
def get_first_column(array_or_dataframe):
return np.asarray(array_or_dataframe)[:, 0]
选项 2
尝试
def get_first_column(array_or_dataframe):
try:
return array_or_dataframe[:, 0]
except:
return array_or_dataframe.iloc[:, 0]
演示
df = pd.DataFrame([[1, 2], [3, 4]])
print(get_first_column(df))
print(get_first_column(df.values))
[1 3]
[1 3]
关于python - 适用于 numpy 数组和 pandas 数据帧的列切片方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221198/