Python:根据给定的索引使用现有 df 中的行创建新数据框

codiearcher

我有一个数据框,我需要创建一个新的,当某一列中的某行与另一行具有相同的元素时,第二次出现的行应该直接移动到包含第一次出现的行下方。恐怕这可能很难解释,但希望通过示例会更清楚。

我有一个这样的 df:(重要的列是“方向”)

    Node  |  Feature | Indicator | Value | Class | Direction
    --------------------------------------------------------
    1     |  WPS     |     <=    | 0.27  | 4     | 1 -> 2  
    --------------------------------------------------------
    2     |  ABC     |     <=    | 0.40  | 5     | 2 -> 3
    --------------------------------------------------------
    3     |  CXC     |     <=    | 0.45  | 2     | 3 -> 4
    --------------------------------------------------------
    4     |  WPS     |     <=    | 0.56  | 1     | 1 -> 5
    --------------------------------------------------------
    5     |  ABC     |     <=    | 0.30  | 3     | 2 -> 5
   --------------------------------------------------------
    6     |  CXC     |     <=    | 0.55  | 5     | 3 -> 1

当方向中的第一个数字出现两次时(在节点 (1 & 4)、(2 & 5) 和 (3 & 6) 的情况下,我希望第二次出现的行(节点 4、5 和 6)直接移动到另一行下方。

我需要的结果是这样的:

    Node  |  Feature | Indicator | Value | Class | Direction
    --------------------------------------------------------
    1     |  WPS     |     <=    | 0.27  | 4     | 1 -> 2  
    --------------------------------------------------------
    4     |  WPS     |     <=    | 0.56  | 1     | 1 -> 5
    --------------------------------------------------------
    2     |  ABC     |     <=    | 0.40  | 5     | 2 -> 3
    --------------------------------------------------------
    5     |  ABC     |     <=    | 0.30  | 3     | 2 -> 5
    --------------------------------------------------------
    3     |  CXC     |     <=    | 0.45  | 3     | 3 -> 4
    --------------------------------------------------------
    6     |  CXC     |     <=    | 0.55  | 5     | 3 -> 1

我花了很长时间试图想出一个解决方案,所以如果有人能够提供帮助,我将不胜感激。

我目前正在尝试做的事情:

创建一个包含 ['Direction'] 列中第一个整数的列表: first_Ints_ls = [1, 2, 3, 1, 2, 3]

然后我尝试在 first_Ints_ls 中找到第一次和第二次出现的索引,我希望用它来通过索引访问 Dataframe 的行。

first_ind_ls = []
second_ind_ls = []

    for i in firstInt_ls:
        # Find the indexes of the first and second occurance
        first_ind = firstInt_ls.index(i, 0)
        second_ind = firstInt_ls.index(i, first_ind+1)
        first_ind_ls.append(first_ind)
        second_ind_ls.append(second_ind)

这产生:

print(first_ind_ls)
>> [1, 2, 3, 1, 2, 3]
print(second_ind_ls)
>> [4, 5, 6]

我从 first_ind_ls 中删除了任何重复项,以便两个列表的大小相同。

# Resulting lists:
>> [1, 2, 3]
>> [4, 5, 6]

现在我想遍历我的 Dataframe 并获取 first_ind_ls 中第一个索引处的行(即 1)并添加到新数据框中,然后获取位于 second_ind_ls 的第一个索引处的行(即 4)并添加到新的数据框。并继续直到我最终得到一个如上所述的数据框。

我已经尝试过的根本不起作用,所以除非有要求,否则我不会费心发布代码。

我真的很难弄清楚如何遍历我的 df 并访问行,同时遍历包含索引的两个列表,然后将每个索引处的行添加到新的 df ...

我只是不知道还能做什么,如果有人有任何建议,我将不胜感激。我对编程很陌生,所以我想我看待问题的方式可能是错误的

它会死

如果我理解正确,排序的唯一关键是Direction列中的第一个元素我假设Direction是类型string所以看看这个实际上非常简单的天真的方法是否适合你。

创建一个键列(不是绝对需要,但为了澄清)

df['key'] = df['Direction'].apply(lambda x: x.split()[0])

然后对这个值进行排序 key

df.sort_values('key')

这行得通吗?或者我错过了什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在新的有组织的df中匹配不同数据框之间的公共行

来自分类Dev

来自现有DF的元信息的新熊猫数据框

来自分类Dev

通过调用df2中列出的df1索引来创建数据框

来自分类Dev

遍历df列并根据行索引,列引用在数据框中返回值

来自分类Dev

遍历df列并根据行索引,列引用在数据框中返回值

来自分类Dev

熊猫通过现有的df行创建单独的df

来自分类Dev

如何使用原始DF的索引创建新的DataFrame重复行

来自分类Dev

如何根据r中的条件使用选定的行创建新的df?

来自分类Dev

转置数据框问题:对于每个df.index和df.column组合,在新数据框中创建一行

来自分类Dev

给定pandas df,从numpy数组中的字符串自动创建新数据帧的名称

来自分类Dev

根据工作日从现有数据框中拆分并创建新数据框

来自分类Dev

Python熊猫根据上述某些行上的条件在数据框中创建新行

来自分类Dev

创建一个函数,根据给定的参数(如熊猫列表中的列表)在数据框中创建新行

来自分类Dev

根据逻辑列的顺序在DF中创建多个新列

来自分类Dev

在python数据框中创建新的矢量

来自分类Dev

R-根据与现有列匹配的值索引创建新的列数据框

来自分类Dev

Python数据框:从df行中删除奇数位和偶数位的数字?

来自分类Dev

使用df.iterrows()删除熊猫数据框中的一行

来自分类Dev

Python根据不同的行创建新的数据框列

来自分类Dev

使用2个参数在df中创建新列

来自分类Dev

使用 df 本身填充 R 数据框中的缺失值

来自分类Dev

从匹配的numpy数组与pandas数据框创建新的pandas df

来自分类Dev

根据两个数据框中的行是否匹配来创建新列

来自分类Dev

根据现有的行和列计算 r 数据框 r 中的新行

来自分类Dev

根据现有列在数据框中创建新的累积列

来自分类Dev

根据现有变量在数据框中创建新变量

来自分类Dev

根据条件从数据框中的现有列创建新列

来自分类Dev

根据现有数据框中的其他列创建一个新列

来自分类Dev

尝试按熊猫 df 中的索引号访问列。数据框由 value.counts() 函数创建。这没用

Related 相关文章

  1. 1

    在新的有组织的df中匹配不同数据框之间的公共行

  2. 2

    来自现有DF的元信息的新熊猫数据框

  3. 3

    通过调用df2中列出的df1索引来创建数据框

  4. 4

    遍历df列并根据行索引,列引用在数据框中返回值

  5. 5

    遍历df列并根据行索引,列引用在数据框中返回值

  6. 6

    熊猫通过现有的df行创建单独的df

  7. 7

    如何使用原始DF的索引创建新的DataFrame重复行

  8. 8

    如何根据r中的条件使用选定的行创建新的df?

  9. 9

    转置数据框问题:对于每个df.index和df.column组合,在新数据框中创建一行

  10. 10

    给定pandas df,从numpy数组中的字符串自动创建新数据帧的名称

  11. 11

    根据工作日从现有数据框中拆分并创建新数据框

  12. 12

    Python熊猫根据上述某些行上的条件在数据框中创建新行

  13. 13

    创建一个函数,根据给定的参数(如熊猫列表中的列表)在数据框中创建新行

  14. 14

    根据逻辑列的顺序在DF中创建多个新列

  15. 15

    在python数据框中创建新的矢量

  16. 16

    R-根据与现有列匹配的值索引创建新的列数据框

  17. 17

    Python数据框:从df行中删除奇数位和偶数位的数字?

  18. 18

    使用df.iterrows()删除熊猫数据框中的一行

  19. 19

    Python根据不同的行创建新的数据框列

  20. 20

    使用2个参数在df中创建新列

  21. 21

    使用 df 本身填充 R 数据框中的缺失值

  22. 22

    从匹配的numpy数组与pandas数据框创建新的pandas df

  23. 23

    根据两个数据框中的行是否匹配来创建新列

  24. 24

    根据现有的行和列计算 r 数据框 r 中的新行

  25. 25

    根据现有列在数据框中创建新的累积列

  26. 26

    根据现有变量在数据框中创建新变量

  27. 27

    根据条件从数据框中的现有列创建新列

  28. 28

    根据现有数据框中的其他列创建一个新列

  29. 29

    尝试按熊猫 df 中的索引号访问列。数据框由 value.counts() 函数创建。这没用

热门标签

归档