首页 > 解决方案 > 将具有单个值列表的 pandas 列转换为行

问题描述

我有以下数据框:

  symbol           PSAR
0   AAPL  [nan,100,200]
1   PYPL  [nan,300,400]
2    SPY  [nan,500,600]

我正在尝试将PSAR列表值转换为如下行:

symbol   PSAR

AAPL     nan
AAPL     100
AAPL     200
PYPL     nan
PYPL     300
...      ...
SPY      600

我一直试图通过遵循这篇文章中的答案来解决它(一个关键的区别是该帖子有一个列表列表)但无法到达那里。 如何将具有值列表的列转换为 Pandas DataFrame 中的行

df['PSAR'].stack().reset_index(level=1, drop=True).to_frame('PSAR')
.join(df[['symbol']], how='left')

标签: pythonpandasnumpy

解决方案


不是一个光滑的,但它可以完成这项工作:

list_of_lists = []
df_as_dict = dict(df.values)
for key,values in df_as_dict.items():
    list_of_lists+=[[key,value] for value in values]
pd.DataFrame(list_of_lists)

返回:

    0      1
0   AAPL    NaN
1   AAPL    100.0
2   AAPL    200.0
3   PYPL    NaN
4   PYPL    300.0
5   PYPL    400.0
6   SPY     NaN
7   SPY    500.0
8   SPY    600.0

推荐阅读