将新值分配给新列时如何基于起始值和结束值列表循环索引

EX_Tenn

简短版:我需要遍历条件数据框以使用一列开始值,结束值和分配值来分配值。第二个数据框拥有我需要在列中分配“赋值”的值。

以下是我正在尝试做的简化版本。我正在使用从导入的CSV创建的两个单独的数据框。一个导入的CSV文件具有“开始”,“结束”和“分配”类别。第二个包含我需要分配值的实际值列表,我也需要分配类别。总的来说,我知道这似乎很奇怪,但这是我获取数据的方式,并且需要大量时间手动处理excel和给出的大量列表上单独类别的标签。

为了方便起见,我创建了与索引号匹配的值名称,但是在我的真实文件中,这些名称与索引号不匹配。

这是带有我的开始,结束和分配值的标准数据框

Start     End     Category
1          15       Dog
16         19       Rabbit
20         23       Bat

这就是我要处理的当前数据框的样子

    Items      
    Item 1        
    Item 2        
    Item 3        
    Item 4        
    Item 5        
    .
    .
    .
    Item 16       
    Item 17       
    Item 18       
    Item 19       
    Item 20       
    Item 21       
    Item 22   

这就是我希望数据框成为

Items       New Column
Item 1        Dog
Item 2        Dog
Item 3        Dog
Item 4        Dog
Item 5        Dog
.
.
.
Item 16       Rabbit
Item 17       Rabbit
Item 18       Rabbit
Item 19       Rabbit
Item 20       Bat
Item 21       Bat
Item 22       Bat
Chiheb Nexus

解决问题的一种方法是将新值应用于,New Column同时在由StartEnd为每个行值创建的范围内过滤第一个数据框,例如以下示例:

import pandas as pd


def assign_value(row, df):
    index = int(row['Items'].replace('Item ', ''))
    # Check if index is in the df start ranges
    _df = df.loc[[index in elm for elm in df['Range'].values]]
    if not _df.empty:
        return _df.iloc[0]['Category']
    return None


start_rows = [(1, 15, 'Dog'), (16, 19, 'Rabbit'), (20, 23, 'Bat')]
df_start = pd.DataFrame(start_rows, columns=['Start', 'End', 'Category'])
# Create a new column with a range from start to end + 1
df_start['Range'] = df_start.apply(lambda row: range(row['Start'], row['End'] + 1), axis=1)
df = pd.DataFrame([f'Item {elm}' for elm in range(1, 23)], columns=['Items'])
df['New Column'] = df.apply(lambda row: assign_value(row, df_start), axis=1)
print(df)

输出:

      Items New Column
0    Item 1        Dog
1    Item 2        Dog
2    Item 3        Dog
3    Item 4        Dog
4    Item 5        Dog
5    Item 6        Dog
6    Item 7        Dog
7    Item 8        Dog
8    Item 9        Dog
9   Item 10        Dog
10  Item 11        Dog
11  Item 12        Dog
12  Item 13        Dog
13  Item 14        Dog
14  Item 15        Dog
15  Item 16     Rabbit
16  Item 17     Rabbit
17  Item 18     Rabbit
18  Item 19     Rabbit
19  Item 20        Bat
20  Item 21        Bat
21  Item 22        Bat

或者,您可以简单地(如果您的起始数据帧很小)可以使用此分配函数:

def assign_value(row, df):
    for _, elm in df.iterrows():
        index = int(row['Items'].replace('Item ', ''))
        if index in range(elm['Start'], elm['End'] + 1):
            return elm['Category']
    return None

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP 如何将起始值分配给变化的值?

来自分类Dev

如何将新值从lapply分配给列表中数据框的新列

来自分类Dev

将新值分配给特定索引处的张量

来自分类Dev

使用linq将值分配给新列表

来自分类Dev

IndexError:将值从for循环分配给元组时,列表索引超出范围

来自分类Dev

如何使用循环将值分配给列表的第i个索引?

来自分类Dev

Python根据另一列的值(通过数字索引确定)将值分配给新列

来自分类Dev

尝试将值分配给groupby对象的新列时出现NotImplementedError

来自分类Dev

尝试将值分配给groupby对象的新列时出现NotImplementedError

来自分类Dev

使用R,如何根据范围内的数字将值分配给新列?

来自分类Dev

如何将输出的多个值分配给数据帧的新多列?

来自分类Dev

检查列是否包含列表中的值并将该值分配给新列

来自分类Dev

根据其他列值熊猫将值分配给新列

来自分类Dev

进入循环后,将新值分配给在while循环比较中使用的变量

来自分类Dev

进入循环后,将新值分配给在while循环比较中使用的变量

来自分类Dev

python将值分配给循环中的列表元素

来自分类Dev

使用循环将值分配给变量列表

来自分类Dev

R-将值分配给for循环中的列表

来自分类Dev

将新值传递并分配给指针C ++

来自分类Dev

VBA Excel:将范围值分配给新范围

来自分类Dev

将新值分配给Pandas DataFrame的子集

来自分类Dev

VBA Excel:将范围值分配给新范围

来自分类Dev

将新值分配给 numpy 数组的问题

来自分类Dev

分配给新变量时,计数器值在循环内更改

来自分类Dev

如何将值列表分配给列表的元素

来自分类Dev

如何将值列表分配给列表的元素

来自分类Dev

将值分配给列表时出错

来自分类Dev

如何使用循环将值分配给 Scala 中的列表列表?

来自分类Dev

如何根据pandas中的组最大值将一列的标签分配给新的一列

Related 相关文章

  1. 1

    PHP 如何将起始值分配给变化的值?

  2. 2

    如何将新值从lapply分配给列表中数据框的新列

  3. 3

    将新值分配给特定索引处的张量

  4. 4

    使用linq将值分配给新列表

  5. 5

    IndexError:将值从for循环分配给元组时,列表索引超出范围

  6. 6

    如何使用循环将值分配给列表的第i个索引?

  7. 7

    Python根据另一列的值(通过数字索引确定)将值分配给新列

  8. 8

    尝试将值分配给groupby对象的新列时出现NotImplementedError

  9. 9

    尝试将值分配给groupby对象的新列时出现NotImplementedError

  10. 10

    使用R,如何根据范围内的数字将值分配给新列?

  11. 11

    如何将输出的多个值分配给数据帧的新多列?

  12. 12

    检查列是否包含列表中的值并将该值分配给新列

  13. 13

    根据其他列值熊猫将值分配给新列

  14. 14

    进入循环后,将新值分配给在while循环比较中使用的变量

  15. 15

    进入循环后,将新值分配给在while循环比较中使用的变量

  16. 16

    python将值分配给循环中的列表元素

  17. 17

    使用循环将值分配给变量列表

  18. 18

    R-将值分配给for循环中的列表

  19. 19

    将新值传递并分配给指针C ++

  20. 20

    VBA Excel:将范围值分配给新范围

  21. 21

    将新值分配给Pandas DataFrame的子集

  22. 22

    VBA Excel:将范围值分配给新范围

  23. 23

    将新值分配给 numpy 数组的问题

  24. 24

    分配给新变量时,计数器值在循环内更改

  25. 25

    如何将值列表分配给列表的元素

  26. 26

    如何将值列表分配给列表的元素

  27. 27

    将值分配给列表时出错

  28. 28

    如何使用循环将值分配给 Scala 中的列表列表?

  29. 29

    如何根据pandas中的组最大值将一列的标签分配给新的一列

热门标签

归档