获取 panda 列或其他默认值

问题描述 投票:0回答:1

在无法假设数据框的列存在的情况下,我经常发现自己实现了一种“也许获取列,否则填充默认值”的方法。想知道是否还有比这更Pandas Idiomatic的风格?

df.get("column", default=pd.Series([dfl_value] * df.shape[0]))
pandas
1个回答
0
投票

没有,但如果你必须经常这样做,你可以创建一个自定义的 pandas 方法:

from pandas.core.base import PandasObject

def get_col(df, col, default=None):
    if col in df:
        return df.get(col)
    return pd.Series([default]*len(df),
                     index=df.index,
                     name=col,
                    )

PandasObject.get_col = get_col

注意。如果不需要,请使用

try
/
except
来避免构建默认的
Series

然后使用

get_col
:

df = pd.DataFrame({'col': [1, 2, 3]})

df.get_col('col', default=999)

# 0    1
# 1    2
# 2    3
# Name: col, dtype: int64

df.get_col('col2', default=999)

# 0    999
# 1    999
# 2    999
# Name: col2, dtype: int64
© www.soinside.com 2019 - 2024. All rights reserved.