我有三个时间序列数据框
df_list=[px, SC, SMA]
每个数据框都有相同的列和相同的日期。我还有一个证券清单(为举例而精简):
securities3=['SPX Index','BIL US Equity']
我正在尝试做类似下面的事情,但它的语法不正确:
for df in df_list:
for col in df.columns:
if col==securities3:
***create new dataframe here***
换句话说,我想要遍历 df_list 中的每个数据框,在 df 的每一列中,当该列与 securities3 的组成部分匹配时,我想要由这三列(每个数据框一列,匹配 securities3 列表)形成一个新的数据框。
为了提供更多详细信息,请参见下面的示例数据:
import pandas as pd
px_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
'SPX Index': [58.63, 21.25, 19.17, 18.8],
'BIL US Equity': [35,105,27,98]}
SC_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
'SPX Index': [20.50, 6, 82, 74.6],
'BIL US Equity': [74,62,8,99]}
SMA_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
'SPX Index': [2, 95.3, 39, 68.27],
'BIL US Equity': [58,37,74,11]}
px = pd.DataFrame(px_data)
SC = pd.DataFrame(SC_data)
SMA = pd.DataFrame(SMA_data)
目标输出是:
SPX_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
'SPX Index': [58.63, 21.25, 19.17, 18.8],
'SPX Index': [20.50, 6, 82, 74.6],
'SPX Index': [2, 95.3, 39, 68.27]}
SPX = pd.DataFrame(SPX_data)
我正在尝试在循环中创建 SPX 数据框(例如),因为列表(securities3)可能会发生变化。另外,作为参考点,因为这是一个更大过程的一部分,所以数据框中的列将始终与列表中的字符串(和位置)相同,就像本例中一样。
谢谢你的帮助。
假设所有数据框都具有相同的日期和顺序,您可以将日期+具有值的列连接起来
axis=1
:更新:
如果
'Date'
是索引,则从concat
调用中删除日期。如果希望每个数据框都在一个变量中,请删除列表推导中的外循环。