下面列出了一个非常非结构化的数据框架。目标是将信息组合成5行数据帧(将字符串组合在第0-3、4-8、9-10、11-15和16行的项目中;代码在同一行集中是相同的;代码不是唯一的)。我能够得到起始索引的索引(0,4,9,11,16…;起始行的前一行有一列'code',值为'nan'),而不使用for循环。但我想不出不使用for循环来组合这些行的方法。。有人能帮忙吗?谢谢您!你知道吗
code item01 item02 item03 item04 item05
0 1111 'a' 123 234 345 440
1 1111 'b' nan nan nan nan
2 nan 'c' nan nan nan nan
3 nan 'd' nan nan nan nan
4 2222 'b' 123 234 345 456
5 2222 'b' nan nan nan nan
6 nan 'c' nan nan nan nan
7 nan 'd' nan nan nan nan
8 nan 'e' nan nan nan nan
9 3333 'd' 123 234 345 456
10 nan 'b' nan nan nan nan
11 1111 'c' 123 234 345 456
12 1111 'b' nan nan nan nan
13 nan 'c' nan nan nan nan
14 nan 'd' nan nan nan nan
15 nan 'e' nan nan nan nan
16 5555 'a' nan nan nan nan
预期结果:
code item01 item02 item03 item04 item05
0 1111 'abcd' 123 234 345 440
1 2222 'bbcde' 123 234 345 456
2 3333 'db' 123 234 345 456
3 1111 'cbcde' 123 234 345 456
4 5555 'a' 123 234 345 456
你能检查一下这个代码是否适合你吗?(我编辑了代码)
在使用唯一代码创建了有效的分组列之后,可以使用
groupby
执行此操作。你知道吗如果每个组的所有行都是连续的,并且标识新组的逻辑是:
当前一个代码值为null时,只需检查代码值是否为null。您可以通过将
'code'
列逐列移位并用列表检查移位列和原始列的值来完成此操作。然后,累积和将为分组创建唯一的值。你知道吗
返回
ddf
:最后一行使用
apply
删除不需要的'
字符,因为所有字符都被顶点包围。您可以通过执行
ddf.reset_index(drop=True, inplace=True)
来摆脱'uniquecode'
索引如果你定义
然后您可以使用
然后可以使用
然后按
group_num
分组:收益率
注意,上面我假设
item01
中的字符串不以单引号开始和结束。 如果有,你可以用然后按上述步骤进行。你知道吗
收益率(删除了
df['item0']
中的单引号)如果要将单引号添加回最终结果,可以使用:
相关问题 更多 >
编程相关推荐