如何将长度不确定的列表按指定列顺序追加至DataFrame?
解决方案
核心思路
把数字列表和指定列顺序的前N个列(N为列表长度)一一映射成字典,再将字典转为单行DataFrame,最后合并到原DataFrame中,未匹配的列自动填充空值(NaN)。
代码实现
import pandas as pd from pandas import DataFrame # 初始化目标DataFrame df = DataFrame(columns=['A', 'B', 'C', 'D', 'E', 'F']) def append_to_df(target_df, cols_order, num_list): # 仅取列顺序中与列表长度匹配的前N个列,构建数据字典 data_dict = dict(zip(cols_order[:len(num_list)], num_list)) # 将字典转为单行DataFrame new_row = pd.DataFrame([data_dict]) # 合并到原DataFrame并重置索引 return pd.concat([target_df, new_row], ignore_index=True)
测试示例
示例1:列顺序为['B','C','D','E','F'],列表为[2,4,6]
df = append_to_df(df, ['B','C','D','E','F'], [2,4,6]) print(df)
输出结果:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 0 | NaN | 2 | 4 | 6 | NaN | NaN |
示例2:列顺序为['E','D','C','B','A'],列表为[4,6]
df = append_to_df(df, ['E','D','C','B','A'], [4,6]) print(df)
输出结果:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 0 | NaN | 2 | 4 | 6 | NaN | NaN |
| 1 | NaN | NaN | NaN | 6 | 4 | NaN |
说明
- 用
pd.concat替代已弃用的df.append(),保证代码兼容性; ignore_index=True避免合并后出现重复索引;- 未被列表覆盖的列自动填充
NaN,对应表格中的空单元格。
内容的提问来源于stack exchange,提问作者Angus Lou
相关产品推荐
相关产品推荐

