Dav*_*Liu 3 python pandas python-3.7
我有一个要从 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 = df.reindex(list(valid_cols))
Run Code Online (Sandbox Code Playgroud)
但这只会给我留下功能名称的交集。
这是你需要的吗?
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
Run Code Online (Sandbox Code Playgroud)