为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

有只小跳蛙 2021-08-05 10:13:37
我有以下数据框:  symbol           PSAR0   AAPL  [nan,100,200]1   PYPL  [nan,300,400]2    SPY  [nan,500,600]我正在尝试将PSAR列表值转换为如下所示的行:symbol   PSARAAPL     nanAAPL     100AAPL     200PYPL     nanPYPL     300...      ...SPY      600我一直试图通过遵循这篇文章中的答案来解决它(一个关键区别是该帖子有一个列表列表)但无法到达那里。 如何将带有值列表的列转换为 Pandas DataFrame 中的行。df['PSAR'].stack().reset_index(level=1, drop=True).to_frame('PSAR').join(df[['symbol']], how='left')
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

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


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


查看完整回答
反对 回复 2021-08-05
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

熊猫 >= 0.25:

df1 = pd.DataFrame({'symbol':['AAPL', 'PYPL', 'SPY'],

               'PSAR':[[None,100,200], [None,300,400], [None,500,600]]})

print(df1)

symbol  PSAR

0   AAPL    [None, 100, 200]

1   PYPL    [None, 300, 400]

2   SPY [None, 500, 600]

df1.explode('PSAR')

    symbol  PSAR

0   AAPL    None

0   AAPL    100

0   AAPL    200

1   PYPL    None

1   PYPL    300

1   PYPL    400

2   SPY     None

2   SPY     500

2   SPY     600


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号