我想将 2 个列表放在一个数据框中。
我的第一个列表包含各种日期。
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_dates 的值
- 每一行的第一个值是股票名称
- “单元格”的值是日期,如果它等于列名
我想过类似的事情
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
选择要使用的日期并转置表格以匹配您想要的输出
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)
关于Python:创建值与列名匹配的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72805694/