我有一个包含多个层次结构列和附加到它们的值的 Dataframe ,如下所示:
| | 位置层次|产业层级|价值|
| - ------|- ------|- ------|- ------|
| 无|美国|全部|第1版|
| 1个|美国加利福尼亚州|全部|第2版|
| 第二章|美国加利福尼亚州|全HT|第3版|
| 三个|美国-加利福尼亚-洛杉矶|全部|第4版|
| 四个|美国-加利福尼亚-洛杉矶|全HT|第5版|
| 五个|美国-加利福尼亚-洛杉矶|全HT软件|第6版|
| 六个|美国-加利福尼亚-洛杉矶|全制造|第七版|
现在我想找到每一行的直接父代,并将它们的值添加到一个新列中。我的示例只显示了两个父代,但可以有更多父代。因此,预期输出如下:
| | 位置层次|产业层级|价值|值-父代-1|值-父代-2|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 无|美国|全部|第1版|* * 不适用**|* * 不适用**|
| 1个|美国加利福尼亚州|全部|第2版|* * 第1版**|* * 不适用**|
| 第二章|美国加利福尼亚州|全HT|第3版|* * 第二版**|* * 不适用**|
| 三个|美国-加利福尼亚-洛杉矶|全部|第4版|* * 第二版**|* * 不适用**|
| 四个|美国-加利福尼亚-洛杉矶|全HT|第5版|* * 第三版**|* * 第四版**|
| 五个|美国-加利福尼亚-洛杉矶|全HT软件|第6版|* * 第五版**|* * 不适用**|
| 六个|美国-加利福尼亚-洛杉矶|全制造|第七版|* * 第四版**|* * 不适用**|
我的 Dataframe 可能非常大,所以速度和内存是重要的因素。所以,逐行处理将无法真正工作。
- 逻辑**:
行的直接父代将是比某个层次高一级的所有行。例如,对于行5,潜在的直接父代将是:
| - |位置层次|产业层级|
| - ------|- ------|- ------|
| 无|美国加利福尼亚州|全HT软件|
| 1个|美国-加利福尼亚-洛杉矶|全HT|
这是创建 Dataframe 的代码,如果你想玩它。
import pandas as pd
df = pd.DataFrame({'location hierarchy': ['US', 'US-California', 'US-California', 'US-California-LA', 'US-California-LA', 'US-California-LA', 'US-California-LA'],
'industry hierarchy': ['All', 'All', 'All-HT', 'All', 'All-HT', 'All-HT-SoftWare', 'All-Manufacturing'],
'value': ['V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7']})
1条答案
按热度按时间iqxoj9l91#
给你: