作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定以下 DataFrame:
>>> pd.DataFrame(data=[['a',1],['a',2],['b',3],['b',4],['c',5],['c',6],['d',7],['d',8],['d',9],['e',10]],columns=['key','value'])
key value
0 a 1
1 a 2
2 b 3
3 b 4
4 c 5
5 c 6
6 d 7
7 d 8
8 d 9
9 e 10
我正在寻找一种可以根据键值更改结构的方法,如下所示:
a b c d e
0 1 3 5 7 10
1 2 4 6 8 10 <- 10 is duplicated
2 2 4 6 9 10 <- 10 is duplicated
结果行号是最长的组计数(上例中的 d),缺失值是最后一个可用值的重复值。
最佳答案
通过 set_index
创建 MultiIndex
带计数器列 cumcount
, 通过 unstack
reshape , 用 ffill
用最后一个非缺失值替换缺失值,并在必要时最后将所有数据转换为 integer
:
df = df.set_index([df.groupby('key').cumcount(),'key'])['value'].unstack().ffill().astype(int)
另一种具有自定义 lambda 函数的解决方案:
df = (df.groupby('key')['value']
.apply(lambda x: pd.Series(x.values))
.unstack(0)
.ffill()
.astype(int))
print (df)
key a b c d e
0 1 3 5 7 10
1 2 4 6 8 10
2 2 4 6 9 10
关于Python - Pandas,将长列拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522060/
我是一名优秀的程序员,十分优秀!