I would like to bring together 2 lists in one dataframe.
The first list I have contains various dates.
my_dates = ['20/12/2024', '31/08/2022', '19/08/2022', '21/06/2024']
The second list is a list of list that contains various stock names and dates.
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']]
]
I would like to bring those two lists together in a dataframe where:
| 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 |
I thought about something like
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)
But this doesn't include the headers and doesn't match the dates with the headers.
As you can see I am new to Python and any help is highly appreciated!
Many thanks Mika
here is an approach that creates each stock as it's own pandas series and then uses pd.concat to make them into a dataframe. it then uses the my_dates to select which dates to use and transposes the table to match your desired output
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)

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With