【发布时间】:2019-11-09 02:11:20
【问题描述】:
创建填充列 C 的 E 列。如果 D 小于 10,则填充先前行和当前行的 C。
这是我的输入数据集:
I,A,B,C,D
1,P,100+,L,15
2,P,100+,M,9
3,P,100+,N,15
4,P,100+,O,15
5,Q,100+,L,2
6,Q,100+,M,15
7,Q,100+,N,3
8,Q,100+,O,15
我尝试使用一些 for 循环。但是,我认为我们可以使用 shift 或 append 函数来完成此操作。但是,我使用 shift 函数得到值错误。
期望的输出:
I,A,B,C,D,E
1,P,100+,L,15,L
2,P,100+,M,9,M+N
3,P,100+,N,15,M+N
4,P,100+,O,15,O
5,Q,100+,L,2,L+O
6,Q,100+,M,15,M+N
7,Q,100+,N,3,M+N
8,Q,100+,O,15,L+O
我正在计算上面所需输出表中给出的列 E。
【问题讨论】:
-
输出是否正确?最后 4 个值?
-
是的。在这里,我们尝试将 L 与 O 以及 M 与 N 合并。
-
但是什么是逻辑?你能解释更多吗?因为 5 和 8 行不是下一个/上一个。
-
我很抱歉。如果 D,L/M/N/O 属于不同的类别。有顺序给出。但是,我需要将 L 与 O 合并。在这种情况下,我已经按照所需的合并顺序对数据进行了排序并解决了问题。
标签: python pandas merge pandas-groupby shift