请问,如何将这个 DataFrame 转换成我想要的样子呢?

2016-03-31 17:31:26 +08:00
 KIDJourney
我现在有个 DateFrame
index song_id action_type ds
0 f87ff481d85d2f95335ab602f38a7655 1 20150315
1 f87ff481d85d2f95335ab602f38a7655 2 20150315
2 f87ff481d85d2f95335ab602f38a7655 1 20150315
3 f87ff481d85d2f95335ab602f38a7655 3 20150316
4 096e604f7b152fad0246ae731ed8ca73 1 20150315
5 096e604f7b152fad0246ae731ed8ca73 1 20150315
6 096e604f7b152fad0246ae731ed8ca73 2 20150315
7 096e604f7b152fad0246ae731ed8ca73 1 20150316
8 096e604f7b152fad0246ae731ed8ca73 2 20150316
9 096e604f7b152fad0246ae731ed8ca73 1 20150316

怎样才能让他变成
song_id 20150315 20150316
f87ff481d85d2f95335ab602f38a7655 [1:2,2:1,3:0] [1:0,2:0,3:1]
096e604f7b152fad0246ae731ed8ca73 [1:2,2:1,3:0] [1:2,2:1,3:0]

这样的呢?
提前感谢大家。
2532 次点击
所在节点    Python
7 条回复
JamesRuan
2016-03-31 18:25:09 +08:00
这不是反范式的吗?现在转换麻烦,日后要提取也麻烦。
KIDJourney
2016-03-31 19:41:06 +08:00
@JamesRuan
感谢回复。
我需要一个以 data series 为 columns 的训练集,感觉这样组织比较好。。。
有什么更好的组织方式吗?
timeship
2016-03-31 19:44:57 +08:00
银古桑
JamesRuan
2016-03-31 22:44:23 +08:00
@KIDJourney
拆表啊,现在这个表是多对多的关系,你拆成多对一的关系用就好了。
ruoyu0088
2016-04-01 19:33:35 +08:00
df.groupby(["song_id", "ds", "action_type"]).action_type.count().unstack().fillna(0).astype(int)
KIDJourney
2016-04-03 10:52:18 +08:00
@JamesRuan

手动拆写完了,但是写起来又乱又麻烦。。。
我想知道有没有属于 df 的优雅一点的处理方法。
KIDJourney
2016-04-03 13:07:32 +08:00
@ruoyu0088 十分感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/267690

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX