从具有多个日期/价格列的数据框中以大熊猫创建面板

jmh123

我在pandas中有一个数据框,其中包含column asset1_date,asset1_price,asset2_date,asset2_price等(最多约500个资产)。asset1_date和asset2_date不一定相同。我想将其重新格式化为一个面板,其中一列称为资产,然后一列表示日期,一列表示价格,即

pd.DataFrame({'asset':['asset1','asset1','asset2','asset2','asset2'],'date':['09/26/2003','09/29/2003','04/10/2007','04/11/2007','04/12/2007'],'price':[102,103,75,74,76]})

当前,数据如下:

pd.DataFrame({'asset1_date':['09/26/2003','09/29/2003',np.nan],'asset1_price':[102,103,np.nan],'asset2_date':['04/10/2007','04/11/2007','04/12/2007'],'asset2_price':[75,74,76]})

有人可以建议使用熊猫方法来实现这一目标吗?谢谢!

格热哥兹·斯基宾斯基

这应该可以解决问题:

df=df.stack().reset_index()
df["asset"]=df["level_1"].str.split("_").str[0]
df["col"]=df["level_1"].str.split("_").str[1]
df=df.set_index(["level_0", "col", "asset"]).unstack("col").reset_index("level_0", drop=True).reset_index("asset", drop=False).drop("level_1", axis=1, level=0)
#please note this following line is a bit of a brute force approach, since I'm assuming you want exactly these columns, alternative you can find in here:
#https://stackoverflow.com/a/47979382/11610186
df.columns=["asset", "date", "price"]

输出:

    asset        date price
0  asset1  09/26/2003   102
1  asset2  04/10/2007    75
2  asset1  09/29/2003   103
3  asset2  04/11/2007    74
4  asset2  04/12/2007    76

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

大熊猫,查找并保留连续的行-创建面板数据

每行大熊猫数据框中的前k列具有值

大熊猫将带有元组的数据框列扩展为多个列和行

大熊猫应用于数据框列以返回带有后缀的多个列

从多个特定日期选择大熊猫中的数据

大熊猫数据框中包含列的总和列

大熊猫:从现有的列值创建一个新的数据框

大熊猫:从基于多个列的数据框中删除观察结果

大熊猫数据框中仅某些列的总和

对大熊猫数据框中的列使用map()

替换大熊猫数据框中的列值

搜索在大熊猫列数据框

大熊猫基于重复的索引数据框创建多个数据框

使用大熊猫数据框的列值创建迷你/子数据框

大熊猫:根据其他数据框创建数据框列

大熊猫基于过去一年获取滚动数据并在数据框中创建列

如何遍历大熊猫数据框,并在整个行中仅保留具有相同值的行?

大熊猫映射来自具有不同列名的2个数据框的数据

大熊猫:将100多个变量融合到100多个新数据框中

大熊猫-如何根据日期组织数据框并为列分配新值

大熊猫,组合多个数据框

大熊猫枢轴数据框与多个groupby

大熊猫:填充多个空白数据框

使用多列在大熊猫中转换大熊猫数据框

大熊猫重塑具有不同长度行的数据框

在大熊猫组数据框中提取具有最大值的行

大熊猫:根据一列中的相似值,使用多个数据框中的值填充数据框中的空列

大熊猫:从数据框返回行,其中列的多个子集不为零

大熊猫:基于多个列对数据框进行排序