【发布时间】:2017-12-08 21:52:24
【问题描述】:
好的,所以我是 Python 的相对菜鸟。我需要对以下数据框进行转换
bd,日期
[[None]], 2017-11-01 09:00:00
[[Sulphur], [Green Tea]], 2017-11-02 09:00:00
[[Green Tea], [Jasmine]], 2017-11-03 09:00:00
.....
转化为
日期、无、硫磺、绿茶、茉莉花...
2017-11-01 09:00:00, 1, 0, 0, 0...
2017-11-02 09:00:00, 0, 1, 1, 0...
2017-11-03 09:00:00, 0, 0, 1, 1...
BD列内嵌列表中的项目是动态的,不能是新dataFrame中的预定义列。
我通过另一篇有用的帖子Create new columns in pandas from python nested lists 尝试了以下内容,但无法成功调整
suppDF1 = suppDF.bd.apply(lambda x: pd.Series(1, x)).fillna(0).astype(int)
使用上面的代码,我只看到 5 列不正确的 1,所以我显然超出了我的理解范围。
更新
我尝试了 Max 的建议,但我想我在尝试使用 pivot 时可能有一些错误:
suppDF1 = suppDF.pivot(index="date", columns="bd")["bd"]
我收到以下错误
unhashable type: 'list'
【问题讨论】:
-
你试过pivot吗?
-
感谢 Max 的建议 - 我在我的 df 上尝试过,但它给了我这个错误:unhashable type: 'list' 我使用了以下代码:suppDF1 = suppDF.pivot(index="date" , columns="bd")["bd"]
-
等等,
suppDF1 = suppDF.pivot(index="date", columns="bd")会抛出错误,还是在最后添加索引["bd"]时发生错误? -
无论哪种方式我都会得到相同的错误 - 即使我最后删除 ["bd"] ,错误也不会改变。这确实让我想知道,我的数据可能没有唯一的日期。这是对枢轴的要求吗?如果是这样,如果需要唯一性,我是否应该尝试添加索引列
-
对不起,我只想指出,BD 列的内容是一个列表,这可能意味着我需要在尝试枢轴之前以某种方式解压。
标签: python list pandas dataframe