【发布时间】:2021-09-10 18:37:24
【问题描述】:
我有创建具有相同结构的数据框列表的代码。我的愿望是将所有这些数据帧附加在一起,但在新数据帧中添加一列,以标识该行最初来自哪个数据帧。
我很容易在数据框列表中添加了:
import pandas as pd
df_rosters = pd.concat(list_of_rosters)
但是,我无法弄清楚如何添加具有原始数据框名称或索引的列。我发现了一堆建议使用 keys 参数的示例;但是每个示例都有硬编码的键。我的列表的大小在不断变化,所以我需要弄清楚如何动态添加键。
提前致谢!
【问题讨论】:
-
在 PyCharm 中,它允许我“复制名称”列表中的每个 DataFrame。但是名称只是 ['00', '01', ... 'n'],所以在连接的 DataFrame 中区分它们(索引?)的任何方法都可以。
-
类似
pd.concat({f'{i:02d}': d for i, d in enumerate(list_of_rosters)})? -
感谢您的建议!这非常接近我正在寻找的内容,但我希望此列在导出(到 CSV)时保持不变。您给我的代码在 IDE DataFrame 查看器中将索引列显示为“00/[index], 01/[index]...n[index]”,但是当我导出它时,该列不在 CSV 中.
-
pd.concat(d.assign(df_name=f'{i:02d}') for i, d in enumerate(list_of_rosters))?
标签: python pandas dataframe key concatenation