繁体   English   中英

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

[英]Convert pandas column with single list of values into rows

我有以下数据框:

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

这不是一个聪明的人,但这可以做到:

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

大熊猫> = 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM