Python:创建值与列名匹配的数据框

标签 python pandas dataframe header columnname

我想将 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 的值
  • 每一行的第一个值是股票名称
  • “单元格”的值是日期,如果它等于列名
<表类="s-表"> <头> <日> 20/12/2024 2022/08/31 19/08/2022 21/06/2024 <正文> 苹果 2024/12/20 2022/08/31 微软 2024/12/20 2022/08/31 21/06/2024 特斯拉 元 2024/12/20 2022/08/31 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 选择要使用的日期并转置表格以匹配您想要的输出

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:创建值与列名匹配的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72805694/

相关文章:

Python Selenium : OSError: [WinError 193] %1 is not a valid Win32 application

python - 使用 Python 将此列表转换为字典

python - 使用 Python 从文本中删除非英语单词

python - 为什么 pandas DataFrame 中的列在此循环中不起作用?

python - lambda或其他方法可以用作python中的默认参数吗

python - 如何为数据帧的每一行应用一个函数,该函数检查嵌入字典的键

python - 计算数据框中的元素数量

python - 如何从数据框中绘制多条线

python - 将部分数据复制到另一列

Python Polars 滚动计数