首页 > 解决方案 > 使用组合字符串和列表作为列标题构建新的 Pandas 数据框

问题描述

我正在尝试在 Pandas 中构建一个新的数据框。生成的数据框需要将部门作为顶部的索引和日期范围。到目前为止,我有以下内容:

#generate a list of years within report range
timeframes_yrs = pd.date_range(start_date,end_date, freq='12MS').strftime('%m/%d/%Y').tolist()
#create a new dataframe with columns named after the output of the list
df=pd.DataFrame(columns=['department', list(timeframes_yrs)])

这似乎为部门创建了一个列(如预期的那样),但随后提供了一个包含我的整个列表的列。

Empty DataFrame
Columns: [department, [01/01/2017, 01/01/2018, 01/01/2019]]

理想情况下,我希望每一个都是列:

Empty DataFrame
Columns: [department, 01/01/2017, 01/01/2018, 01/01/2019]

我尝试将“部门”一词设置为变量并将其传递给相同的结果。我也尝试过调整语法(括号、括号等),但没有成功。

我的问题是 - 我是否需要通过“For”循环或先添加列表然后再添加附加列来完成此操作,或者有没有办法通过在创建时将字符串和列表传递到 Pandas 数据框来完成此操作“列”。

标签: pythonpython-3.xpandasdataframe

解决方案


使用 解压缩包含日期范围的可迭代对象*,即iterable unpacking operator

df = pd.DataFrame(columns=['department', *timeframes_yrs])

Columns: [department, 01/01/2017, 01/01/2018, 01/01/2019]

推荐阅读