免责声明:这可能是重复的,但我不能找到确切的解决方案。请随时标记这个问题为重复,并提供链接到重复的问题在评论。
我还在学习python dataframe操作,这可能有一个非常简单的解决方案,我不能弄清楚。
我有一个spark Dataframe ,大约有1200万行,列很少。现在我想根据另外两列的最大值和前一行的派生值来派生一列。
输入-
| A列|B栏|C列|D栏|E列|F列|G列|
| - -|- -|- -|- -|- -|- -|- -|
| 一个|四月|小行星2022|三个|2个|三个|第0页|
| 一个|五月|小行星2022|三个|2个|三个|第0页|
| 一个|六月|小行星2022|三个|一个|一个|第0页|
| 一个|七月|小行星2022|三个|2个|四个|第0页|
| 一个|八月|小行星2022|三个|2个|-1个|第0页|
| 一个|九月|小行星2022|三个|八个|三个|第0页|
| 一个|十月|小行星2022|三个|2个|三个|第0页|
| 一个|十一月|小行星2022|三个|2个|第0页|第0页|
| 一个|十二月|小行星2022|三个|2个|第0页|第0页|
| 一个|扬|小行星2023|三个|2个|六个|第0页|
| 一个|二月|小行星2023|三个|2个|五个|第0页|
| 一个|马尔|小行星2023|三个|2个|六个|第0页|
| 一个|四月|小行星2023|三个|2个|七个|第0页|
| 一个|五月|小行星2023|第0页|第0页|第0页|第0页|
| 2个|四月|二〇一七年|三个|2个|三个|第0页|
| 2个|四月|二〇一七年|三个|2个|三个|第0页|
| 2个|四月|二〇一七年|三个|一个|一个|第0页|
| 2个|四月|二〇一七年|三个|2个|四个|第0页|
| 2个|四月|二〇一七年|三个|2个|-1个|第0页|
| 2个|四月|二〇一七年|三个|七个|三个|第0页|
输出-
| A列|B栏|C列|D栏|E列|F列|G列|H列|逻辑|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|
| 一个|四月|小行星2022|三个|2个|三个|第0页|三个|E列和F列的最大值|
| 一个|五月|小行星2022|三个|2个|三个|第0页|三个|E列和F列的最大值以及H列上一行的输出|
| 一个|六月|小行星2022|三个|一个|一个|第0页|三个|E列和F列的最大值以及H列上一行的输出|
| 一个|七月|小行星2022|三个|2个|四个|第0页|四个|E列和F列的最大值以及H列上一行的输出|
| 一个|八月|小行星2022|三个|2个|-1个|第0页|四个|E列和F列的最大值以及H列上一行的输出|
| 一个|九月|小行星2022|三个|八个|三个|第0页|八个|E列和F列的最大值以及H列上一行的输出|
| 一个|十月|小行星2022|第0页|2个|三个|第0页|八个|E列和F列的最大值以及H列上一行的输出|
| 一个|十一月|小行星2022|第0页|2个|第0页|第0页|八个|E列和F列的最大值以及H列上一行的输出|
| 一个|十二月|小行星2022|第0页|第0页|第0页|第0页|八个|E列和F列的最大值以及H列上一行的输出|
| 一个|扬|小行星2023|第0页|第0页|六个|-3个|六个|如果G列〈0,E列和F列的最大值和(H列前一行的输出+G列)|
| 一个|二月|小行星2023|第0页|2个|五个|第0页|六个|E列和F列的最大值以及H列上一行的输出|
| 一个|马尔|小行星2023|第0页|2个|六个|第0页|六个|E列和F列的最大值以及H列上一行的输出|
| 一个|四月|小行星2023|第0页|第0页|七个|第0页|七个|E列和F列的最大值以及H列上一行的输出|
| 一个|五月|小行星2023|第0页|第0页|第0页|第0页|七个|E列和F列的最大值以及H列上一行的输出|
| 2个|四月|二〇一七年|三个|2个|三个|第0页|三个|E列和F列的最大值|
| 2个|四月|二〇一七年|三个|2个|三个|第0页|三个|E列和F列的最大值以及H列上一行的输出|
| 2个|四月|二〇一七年|三个|一个|一个|第0页|三个|E列和F列的最大值以及H列上一行的输出|
| 2个|四月|二〇一七年|三个|2个|四个|第0页|四个|E列和F列的最大值以及H列上一行的输出|
| 2个|四月|二〇一七年|三个|2个|-1个|第0页|四个|E列和F列的最大值以及H列上一行的输出|
| 2个|四月|二〇一七年|三个|七个|三个|第0页|七个|E列和F列的最大值以及H列上一行的输出|
需要使用以下逻辑创建新列H
- Dataframe使用列A中的不同值填充,这些值分布在不同的月份和年份中,并按升序排列。
1.列A中每个非重复值的第一行必须是列E和F中的最大值 - H列的后续行值是E列和F列的最大值以及H列的前一行的值。(当G列〉=0时)
1.如果列G〈0,则列H为(列E和列F以及(列G +列H的前一行值))的最大值
1条答案
按热度按时间vi4fp9gy1#
了解,有可能吨类似的问题,但不是exakt你在寻找什么。我希望这有助于:
| 索引|A列|B栏|C列|D栏|E列|F列|G列|H列|逻辑|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|- -|
| 第0页|一个|四月|小行星2022|三个|2个|三个|第0页|三个|3.0版本|
| 一个|一个|五月|小行星2022|三个|2个|三个|第0页|三个|3.0版本|
| 2个|一个|六月|小行星2022|三个|一个|一个|第0页|一个|3.0版本|
| 三个|一个|七月|小行星2022|三个|2个|四个|第0页|四个|4.0版本|
| 四个|一个|八月|小行星2022|三个|2个|-1个|第0页|2个|4.0版本|
| 五个|一个|九月|小行星2022|三个|八个|三个|第0页|八个|8.0版本|
如果它不完全是你想要的,它至少应该给予你一些关于如何实现你想要的想法。