python - 使用部分列名将数据框拆分为 3 个新数据框
问题描述
我有一个包含三种不同类型(按名称)变量的数据框。我想使用变量的名称作为过滤器并将数据帧拆分为 3 个新数据帧。在我的第一个数据框中,我想要 PERIOD、A、B、C。在我的第二个数据框中,我想要 PERIOD、A_TREND、B_TREND、C_TREND,在我的第三个数据框中,我想要 PERIOD、A_Seasonally_Adjusted、B_Seasonally_Adjusted、C_Seasonally_Adjusted。
我在这里寻找特定的解决方案,它以通用的方式使用列名(_Trend & _Seasonally_Adjusted)中的信息来实现上述目标。
df=pd.DataFrame(np.array([['2021-04', 1, 12, 33, 2, 35, 6, 3, 8, 90],
['2021-05', 4, 98, 9, 5, 82, 94, 82, 9, 21],
['2021-06', 81, 9, 8, 8, 9, 9, 8, 3, 72]]),
columns=['PERIOD', 'A', 'B', 'C',
'A_Trend', 'A__Seasonally Adjusted',
'B_Trend', 'B__Seasonally Adjusted',
'C_Trend', 'C__Seasonally Adjusted'])
解决方案
你可以.filter
使用like
trend_df = df.filter(like='Trend')
season_df = df.filter(like='Seasonally Adjusted')
print(trend_df)
A_Trend B_Trend C_Trend
0 2 6 8
1 5 94 9
2 8 9 3
print(season_df)
A__Seasonally Adjusted B__Seasonally Adjusted C__Seasonally Adjusted
0 35 3 90
1 82 82 21
2 9 8 72
然后使用增量来获取您的起始列。
df.loc[:,~df.columns.isin(season_df.columns.tolist() + trend_df.columns.tolist())]
PERIOD A B C
0 2021-04 1 12 33
1 2021-05 4 98 9
2 2021-06 81 9 8
如果要Period
在所有数据框中,首先设置为索引
df.set_index('Period') #or
df.set_index('Period',append=True)
推荐阅读
- node.js - Redis 按模式删除
- excel - 使用条件从excel中的字符串中提取数字
- node.js - Dropzone / React / NodeJS - 上传图像数组
- perl - CORE Perl 中的哪些内容将 ERRNO ($!) 设置为成功?
- c++ - 我在 CodeBlocks 上遇到了这个错误,但如果我修复它,它会触发一个错误,该错误是从修复第一个错误时触发的。我该如何解决?
- spring-boot - Feign 客户端 - 如何在运行时更改读取超时选项值?
- python - Dash Python App Button 用于操作并刷新页面
- java - 每个 ASCII 钟声之间是否有默认间隔?
- javascript - 午夜 React Native 后台作业
- c# - 在 C# 中。如何使用循环打印用户订单的小计和总计(含税)