相关疑难解决方法(0)

多个插入列如果不存在熊猫

我有以下 df

list_columns = ['A', 'B', 'C']
list_data = [
    [1, '2', 3],
    [4, '4', 5],
    [1, '2', 3],
    [4, '4', 6]
    ]
df = pd.DataFrame(columns=list_columns, data=list_data)
Run Code Online (Sandbox Code Playgroud)

我想检查是否存在多个列,如果不创建它们。

示例:如果 B、C、D 不存在,则创建它们(对于上述 df 它将仅创建 D 列)我知道如何使用一列执行此操作:

if 'D' not in df:
    df['D']=0
Run Code Online (Sandbox Code Playgroud)

有没有办法测试我的所有列是否都存在,如果不存在,则创建缺少的列?并且不要为每一列做一个 if

python pandas

5
推荐指数
1
解决办法
1812
查看次数

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

我有一个要从 DataFrame 中获取的列名列表。

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

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

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']
Run Code Online (Sandbox Code Playgroud)

我试过类似的东西:

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 = …
Run Code Online (Sandbox Code Playgroud)

python pandas python-3.7

3
推荐指数
1
解决办法
2442
查看次数

标签 统计

pandas ×2

python ×2

python-3.7 ×1