我想在一个数据框架中收集两个列表.

我的第一个列表包含各种日期.

my_dates = ['20/12/2024', '31/08/2022', '19/08/2022', '21/06/2024']

第二个列表是包含各种股票名称和日期的列表.

my_stocks = [
    ["AAPL", ['20/12/2024', '31/08/2022']],
    ["MSFT", ['20/12/2024', '31/08/2022', '21/06/2024']], 
    ["TSLA", []], 
    ["META", ['20/12/2024', '31/08/2022', '19/08/2022', '21/06/2024']]
]

我希望将这两个列表合并到一个数据框架中,其中:

  • 标题/列名是my\u dates的值
  • 每行的第一个值是股票名称
  • 如果"单元格"的值等于列名,则其值为日期
20/12/2024 31/08/2022 19/08/2022 21/06/2024
AAPL 20/12/2024 31/08/2022
MSFT 20/12/2024 31/08/2022 21/06/2024
TSLA
META 20/12/2024 31/08/2022 19/08/2022 21/06/2024

我想了一下

new = []

for elem in my_stocks:
    new.append(elem)


df = pd.DataFrame(new)

df = pd.concat([df[0],df[1].apply(pd.Series)],axis=1)

print(df)

但这不包括标题,并且日期与标题不匹配.

正如您所看到的,我对Python是新手,非常感谢您的帮助!

非常感谢

推荐答案

这里有一种方法,将每个股票创建为它自己的Pandas 系列,然后使用pd.concat将它们制作成一个数据帧.然后,它使用my_dates来 Select 要使用的日期,并转换表以匹配所需的输出

import pandas as pd

my_dates = ['20/12/2024', '31/08/2022', '19/08/2022', '21/06/2024']
my_stocks = [["AAPL", ['20/12/2024', '31/08/2022']],["MSFT", ['20/12/2024', '31/08/2022', '21/06/2024']], ["TSLA", []], ["META", ['20/12/2024', '31/08/2022', '19/08/2022', '21/06/2024']]]

stock_df = pd.concat((pd.Series(ds, ds, name=n, dtype='object') for n,ds in my_stocks), axis=1)
stock_df = stock_df.loc[my_dates]

stock_df = stock_df.T
print(stock_df)

enter image description here

Python相关问答推荐

海运图:调整行和列标签

从groupby执行计算后创建新的子框架

如何在Python数据框架中加速序列的符号化

如何在WSL2中更新Python到最新版本(3.12.2)?

Pandas GroupBy可以分成两个盒子吗?

如何更改groupby作用域以找到满足掩码条件的第一个值?

在用于Python的Bokeh包中设置按钮的样式

如何在Python中将超链接添加到PDF中每个页面的顶部?

如何在Gekko中处理跨矢量优化

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

比较两个有条件的数据帧并删除所有不合格的数据帧

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

按条件计算将记录拆分成两条记录

Pandas:使列中的列表大小与另一列中的列表大小相同

保存由PYTHON在EXCEL中所做更改的问题

如何在开始迭代自定义迭代器类时重置索引属性?

Pip:卸载`-e`安装过程中安装的所有pkgs

给定y的误差时,线性回归系数的计算误差

如何省略所有Pandas 数据帧