将具有单个值列表的熊猫列转换为行

我有以下数据框:


  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')


有只小跳蛙
浏览 150回答 2
2回答

qq_笑_17

不是一个光滑的,但这可以完成工作: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      10   AAPL    NaN1   AAPL    100.02   AAPL    200.03   PYPL    NaN4   PYPL    300.05   PYPL    400.06   SPY     NaN7   SPY    500.08   SPY    600.0

米琪卡哇伊

熊猫 >= 0.25:df1 = pd.DataFrame({'symbol':['AAPL', 'PYPL', 'SPY'],               'PSAR':[[None,100,200], [None,300,400], [None,500,600]]})print(df1)symbol  PSAR0   AAPL    [None, 100, 200]1   PYPL    [None, 300, 400]2   SPY [None, 500, 600]df1.explode('PSAR')    symbol  PSAR0   AAPL    None0   AAPL    1000   AAPL    2001   PYPL    None1   PYPL    3001   PYPL    4002   SPY     None2   SPY     5002   SPY     600
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java