python - 熊猫:从其他列的值填充新列
问题描述
我有一个包含多个代码和周期的 SEC 报告的 pandas.dataframe。
DF的可重现字典:
{'Unnamed: 0': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4},
'field': {0: 'taxonomyid',
1: 'cik',
2: 'companyname',
3: 'entityid',
4: 'primaryexchange'},
'value': {0: '50',
1: '0000023217',
2: 'CONAGRA BRANDS INC.',
3: '6976',
4: 'NYSE'},
'ticker': {0: 'CAG', 1: 'CAG', 2: 'CAG', 3: 'CAG', 4: 'CAG'},
'cik': {0: 23217, 1: 23217, 2: 23217, 3: 23217, 4: 23217},
'dcn': {0: '0000023217-18-000009',
1: '0000023217-18-000009',
2: '0000023217-18-000009',
3: '0000023217-18-000009',
4: '0000023217-18-000009'},
'fiscalyear': {0: 2019, 1: 2019, 2: 2019, 3: 2019, 4: 2019},
'fiscalquarter': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
'receiveddate': {0: '10/2/2018',
1: '10/2/2018',
2: '10/2/2018',
3: '10/2/2018',
4: '10/2/2018'},
'periodenddate': {0: '8/26/2018',
1: '8/26/2018',
2: '8/26/2018',
3: '8/26/2018',
4: '8/26/2018'}}
“字段”列包含报告字段的名称(例如指标),“值”列包含该指标的值。其他列是对 SEC 文件的描述(ticker+date+fiscal_periods = 描述特定文件的唯一特征集)。每个申请大约有 60-70 个指标(数量不同)。
使用下面的代码,我设法创建了一个具有列 = 特征的数据透视数据框(假设 1 次提交的 N 总数)。但是这个数据帧的长度也等于指标的数量 = N,在非对角线的地方有 NaN。
# Adf - Initial dataframe
c = Adf.pivot(columns='field', values='value')
d = Adf[['ticker','cik','fiscalyear','fiscalquarter','dcn','receiveddate','periodenddate']]
e = pd.concat([d, c], sort=False, axis=1)
我想使用“字段”中的指标名称作为新列(从窄格式到宽格式)。最后,我希望每个 SEC 报告都有一个包含 1 行的数据框。因此,所提供示例的预期输出是具有 N 个新列的 1 行数据帧,其中 N = 初始数据帧的“字段”列中唯一指标的数量:
{'ticker': {0: 'CAG'},
'cik': {0: 23217},
'dcn': {0: '0000023217-18-000009'},
'fiscalyear': {0: 2019},
'fiscalquarter': {0: 1},
'receiveddate': {0: '10/2/2018'},
'periodenddate': {0: '8/26/2018'},
'taxonomyid':{0:'50'},
'cik': {0: '0000023217}',
'companyname':{0: 'CONAGRA BRANDS INC.'},
'entityid':{0:'6976'},
'primaryexchange': {0:'NYSE'},
}
从多个 NaN 创建此类列的正确方法是什么,或者从多个 NaN 中清理生成的数据帧的正确方法是什么?
解决方案
对我有用的是为 DF 设置新索引并取消堆叠“字段”和“值”列
aa = Adf.set_index(['ticker','cik', 'fiscalyear','fiscalquarter', 'dcn','receiveddate', 'periodenddate', 'field']).unstack()
aa = aa.reset_index()
推荐阅读
- sql-server - dbatools(或 SQL Server 的 SMO)- 模式导出期间的表排序
- angular - 对象的访问属性
- javascript - 我的 Phaser 3 游戏仅加载 1 个文本链的字体。我不知道为什么
- oracle - Oracle RECORDS 和记录类型表
- css - CSS图像背景未显示在某些移动页面上
- azure-active-directory - 无法确定 JWT 访问令牌为何不适用于 Azure SQL。连接失败 用户 ' 登录失败
' - python - python: ../common/JackGraphManager.cpp:36: void Jack::AssertBufferSize(jack_nframes_t): 断言 `buffer_size <= BUFFER_SIZE_MAX' 失败
- docker - Docker 映像构建无法识别构建参数:无效的参考格式
- r - Tidyeval:如何在没有用户引用的情况下将带有引用元素的列表传递给嵌套函数?
- excel - 如何获得每日和每小时平均值?