我想把两个列表放在一个dataframe中。
我的第一个列表包含各种日期。
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']]
]
我想把这两个列表放在一个dataframe中,其中:
- 标题/列名是my_dates的值
- 每行的第一个值是股票名称
- 如果“单元格”的值等于列名,则该值为日期
2024年12月20日 | 2022年8月31日 | 2022年8月19日 | 2024年6月21日 | |
---|---|---|---|---|
AAPL语言 | 2024年12月20日 | 2022年8月31日 | ||
MSFT | 2024年12月20日 | 2022年8月31日 | 2024年6月21日 | |
传输层协议 | ||||
meta | 2024年12月20日 | 2022年8月31日 | 2022年8月19日 | 2024年6月21日 |
我想到了一些东西
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的新手,任何帮助都非常感谢!
非常感谢Mika
2条答案
按热度按时间r7s23pms1#
这里是一个方法,创建每个股票作为它自己的pandas系列,然后使用
pd.concat
使它们成为一个dataframe.然后使用my_dates
选择要使用的日期,并将表转置以匹配您所需的输出628mspwn2#
通常在这种情况下,最好使用纯python将数据转换为正确的格式,然后使用处理后的数据创建DataFrame。它使您的代码更简单,更具可读性,并且通常比使用基于
pandas
的解决方案更有效。输出: