使用melt将列表传递给VAR的正确方法

2024-10-01 19:25:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定如何使用python实现这一点,但我被卡住了。列中的ticker值采用列表格式。当试图将该列表传递给melt的value_vars时,我得到一个错误。当我尝试转换为元组时,它仍然包含列表括号。文档中说“value_vars——tuple、list或ndarray,可选”——没有成功的列表或tuple。提前谢谢

我的数据:

                    sector  ticker
0   Communication Services  [ATVI.OQ, GOOGL.OQ, GOOG.OQ, T.N, CTL.N, CHTR....
1   Consumer Discretionary  [AAP.N, AMZN.OQ, APTV.N, AZO.N, BBY.N, BKNG.OQ...
rowData = groups.loc[groups['sector'] == 'Communication Services']
print(tuple(rowData['ticker']))
new_df = pd.melt(new_df, id_vars=['date'], value_vars=rowData['ticker'])

元组与此输出不匹配:

(['ATVI.OQ', 'GOOGL.OQ', 'GOOG.OQ', 'T.N', 'CTL.N', 'CHTR'],)

下面是值_vars error:

TypeError: unhashable type: 'list'

编辑 解决使用

tup = tuple(rowData['ticker'].explode())
new_df = pd.melt(new_df, id_vars=['date'], value_vars=tup)

Tags: df列表newvaluevarslistcommunication元组
1条回答
网友
1楼 · 发布于 2024-10-01 19:25:26

您的数据实际上不是宽格式的。我想你想要的只是把这个专栏炸开:

df = pd.DataFrame({'A': [[1, 2, 3], [4, 5, 6]], 'B': ['A', 'B']})
df.explode('A')
Out[21]: 
   A  B
0  1  A
0  2  A
0  3  A
1  4  B
1  5  B
1  6  B

但我不能百分之百确定最终目标是什么。见http://xyproblem.info/

相关问题 更多 >

    热门问题