是否有更Pythonic或pandas惯用的方法来删除DataFrame
列而不只是设置errors="ignore"
?
假设我有以下DataFrame
:
import pandas as pd
from pandas import DataFrame
df_initial: DataFrame = pd.DataFrame([
{
"country": "DE",
"price": 1,
"quantity": 10
}
])
如果我不确定何时可以调用一个丢弃列的函数(我在Jupyter Notebook的上下文中思考),是否有一种方法可以做到不只是忽略错误(如下所示)?
df_country_dropped = df_initial.drop("country", axis=1, errors="ignore")
也许我太挑剔了,但我希望有一种更python化的方法来处理这个问题,而不仅仅是忽略KeyError
。
我意识到在删除之前可以检查列是否存在:
def drop_country_if_exists(df):
if "country" in df:
return df.drop("country", axis=1)
df_country_dropped = drop_country_if_exists(df_initial)
但我希望可能有一个更优雅的方式!
如果您试图避免创建额外函数的开销,我认为列表推导式是实现您所需的一种python方式。
这样的方法是幂等的,并且足够优雅:
df[[col for col in df.columns if col != 'country']]
这个方法的好处是,如果你想删除列列表,通过将!=
更改为not in
并传递列名列表,它很容易扩展。