【发布时间】:2019-08-20 13:49:59
【问题描述】:
我有两个数据框 df1 和 df2。 df1 就像一个具有以下值的字典
Ticker INDUSTRY_SECTOR
TLRA_Equity Communications
KAMN_Equity Industrial
B_Equity Industrial
ARNC_Equity Industrial
RC_Equity Consumer, Non-cyclical
DAR_Equity Consumer, Non-cyclical
df2 具有以下值:
Date TLRA_Equity KAMN_Equity B_Equity ARNC_Equity RC_Equity DAR_Equity
1/1/2000 10 20 30 40 50 60
2/1/2000 15 25 35 45 55 65
3/1/2000 17 27 37 47 57 67
我想根据 df1 数据帧中的INDUSTRY_SECTOR 将 df2 拆分为 3 个新数据帧。
- 日期,TLRA_Equity 列应在
Communications数据帧中 - 日期、KAMN_Equity、B_Equity、ARNC_Equity 列应在
Industrial数据帧中 - 日期、RC_Equity、DAR_Equity 列应在
Consumer, Non-cyclical数据帧中
预期输出:
-
Communications数据框Date TLRA_Equity 1/1/2000 10 2/1/2000 15 3/1/2000 17 -
Industrial数据帧Date KAMN_Equity B_Equity ARNC_Equity 1/1/2000 20 30 40 2/1/2000 25 35 45 3/1/2000 27 37 47 -
Consumer, Non-cyclical数据框Date RC_Equity DAR_Equity 1/1/2000 50 60 2/1/2000 55 65 3/1/2000 57 67
请让我知道如何以有效的方式进行操作。我试图做的是将列名连接起来,例如Communications_TLRA_Equity,然后根据列名的前半部分拆分数据框。
代码:
col_names = df2.columns.values.tolist()
d_cols = df2.columns.map(df1.set_index('Ticker')['INDUSTRY_SECTOR'].get)
print(d_cols)
df.columns = [d_cols + "_" str(col) for col in df.columns]
for sector, df_sector in df.columns.str.split('_').str[0].tolist():
print(sector)
print(df_sector)
但这很复杂。需要更好的解决方案。
【问题讨论】: