gpt4 book ai didi

python - 如果名称在列表中,则选择 Pandas 数据框的列,或创建默认值并删除其余列

转载 作者:行者123 更新时间:2023-12-03 23:35:52 26 4
gpt4 key购买 nike

我有一个列名列表,我想从 DataFrame 中获取。

  1. 如果在列表中,我们只想对指定的列进行切片
  2. 如果不在列表中,我们要生成一个占位符默认列0的
  3. 如果 DataFrame 中有其他列名,则它们是不相关的,应删除或忽略。

添加单个 pandas 列很明显:Pandas: Add column if does not exists ,但我正在寻找一种有效且清晰的方法来添加多个列(如果它们不存在)。

d = {'a': [1, 2], 'b': [3, 4], 'c': [5,6], 'd': [7,8]}
df = pd.DataFrame(d)
df
a b c d
0 1 3 5 7
1 2 4 6 8

requested_cols = ['a','b','x','y','z']

我尝试了类似的方法:

valid_cols = df.columns.values
missing_col_names = [col_name for col_name in requested_cols if col_name not in valid_cols]

df = df.reindex(list(df) + missing_col_names, axis=1).fillna(0)
df = df.loc[:,df.columns.isin(valid_cols)]
df = df.reindex(list(valid_cols))

但这只会给我留下特征名称的交集。

最佳答案

这是你需要的吗?

df.reindex(columns = requested_cols, fill_value=0)
Out[134]:
a b x y z
0 1 3 0 0 0
1 2 4 0 0 0

关于python - 如果名称在列表中,则选择 Pandas 数据框的列,或创建默认值并删除其余列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com