基于 if/elif/and 函数在 Pandas 数据框中创建新列

牧马人

我已经搜索了我的确切问题无济于事。这两个线程创建基于IF-elif的- else条件新列创造新的大熊猫基础上的if-else的查找条件数据框柱虽然我的代码无法执行引导我的代码。

问题:我有一个数据框,我在下面复制了示例。区域属性只有两个值 - a 或 b(或可以有更多),年份相同,但区域 a 可以有两个年份等。我想要做的是创建一个新列,“美元”,并查找值对于区域,如果它是区域“a”并且年份是例如 2006,则在该行中获取销售额,然后乘以该年的费率并在新列中附加值 - 美元。我是初学者,下面是我到目前为止所拥有的 - 通过函数 - 显然执行 .apply 函数会返回一个ValueError:('系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。'、'发生在索引 0')。我对更有效的实现特别感兴趣,因为数据框相当大并且很想优化计算效率。

import pandas as np

rate_2006, rate_2007 = 100, 200


c = {
'region': ["a", "a", "a", "a", "a", "b", "b", "b", "b", "a", "b"],
'year': [2006, 2007, 2007, 2006, 2006, 2006, 2007, 2007, 2007, 2006, 2007],
'sales': [500, 100, 2990, 15, 5000, 2000, 150, 300, 250, 1005, 600]
}

df1 = pd.DataFrame(c)
df1

def new_col(row): 
    if df1["region"] == "a" and df1["year"] == 2006:
        nc = row["sales"] * rate_2006
    elif df1["region"] == "a" and df1["year"] == 2007:
        nc = row["sales"] * rate_2007
    elif df1["region"] == "b" and df1["year"] == 2006:
        nc = row["sales"] * rate_2006
    else:
        nc = row["sales"] * rate_2007
    return nc

df1["Dollars"] = df1.apply(new_col, axis=1)
df1
Sumit S Chawla

问题可能是由于您使用它的方式。不知道对你有没有帮助。但我已经根据我的知识重新编写了代码。

import pandas as pd

rate_2006, rate_2007 = 100, 200


c = {
'region': ["a", "a", "a", "a", "a", "b", "b", "b", "b", "a", "b"],
'year': [2006, 2007, 2007, 2006, 2006, 2006, 2007, 2007, 2007, 2006, 2007],
'sales': [500, 100, 2990, 15, 5000, 2000, 150, 300, 250, 1005, 600]
}

df1 = pd.DataFrame(c)
print(df1)

def new_col(value): 
    if df1.loc[value,"region"] == "a" and df1.loc[value,"year"] == 2006:
        df1.loc[value,"Dollars"] = df1.loc[value,"sales"] * rate_2006
    elif df1.loc[value,"region"] == "a" and df1.loc[value,"year"] == 2007:
        df1.loc[value,"Dollars"] = df1.loc[value,"sales"] * rate_2007
    elif df1.loc[value,"region"] == "b" and df1.loc[value,"year"] == 2006:
        df1.loc[value,"Dollars"] = df1.loc[value,"sales"] * rate_2006
    else:
        df1.loc[value,"Dollars"] = df1.loc[value,"sales"] * rate_2007

for value in range(len(df1)):
    new_col(value)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用rnorm函数从数据框中创建基于新列的其他列

来自分类Dev

基于名称的pandas数据框组列并应用函数

来自分类Dev

如何基于pandas中的groupby函数将数据框中的特定列转换为字典?

来自分类Dev

在pandas数据框中创建新列,作为另一列的函数

来自分类Dev

如何基于年份在Pandas数据框中创建多个列

来自分类Dev

从返回元组的函数创建新的pandas数据框列

来自分类Dev

如何在不同的输入参数中应用相同的函数在pandas数据框中创建新列?

来自分类Dev

使用 *args 编写函数在 Pandas 数据框中创建一个新列

来自分类Dev

创建函数以重命名Pandas数据框中的列

来自分类Dev

基于现有列中变量值的Pandas数据框中的新列

来自分类Dev

如何在Pandas数据框中的其他列中填充基于新列的值

来自分类Dev

基于具有min函数的列比较创建新数据

来自分类Dev

如何基于三角函数计算Pandas中的新列?

来自分类Dev

如何基于三角函数计算Pandas中的新列?

来自分类Dev

基于数据框中的两列创建新列

来自分类Dev

Python:基于整数范围的值在Pandas数据框中创建组列

来自分类Dev

如何基于数据框中的列条件应用函数

来自分类Dev

如何基于数据框中的列条件应用函数

来自分类Dev

pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

来自分类Dev

Pandas:基于函数有效更新列值

来自分类Dev

基于列的基于函数的索引

来自分类Dev

基于过滤器在Pandas DataFrame中创建新列

来自分类Dev

基于先前行的pandas数据框列

来自分类Dev

Pandas 数据框基于值的列组合

来自分类Dev

在pandas数据框中基于顺序的列重新排列

来自分类Dev

创建一个函数以绘制计数图或基于数据框中列的数据类型绘制直方图

来自分类Dev

从Pandas数据框中的其他列创建新列

来自分类Dev

基于数组的pandas df中的新列

来自分类Dev

创建一个函数以基于给定的参数(如列表和熊猫中的特定条件)在数据框中创建新行

Related 相关文章

  1. 1

    使用rnorm函数从数据框中创建基于新列的其他列

  2. 2

    基于名称的pandas数据框组列并应用函数

  3. 3

    如何基于pandas中的groupby函数将数据框中的特定列转换为字典?

  4. 4

    在pandas数据框中创建新列,作为另一列的函数

  5. 5

    如何基于年份在Pandas数据框中创建多个列

  6. 6

    从返回元组的函数创建新的pandas数据框列

  7. 7

    如何在不同的输入参数中应用相同的函数在pandas数据框中创建新列?

  8. 8

    使用 *args 编写函数在 Pandas 数据框中创建一个新列

  9. 9

    创建函数以重命名Pandas数据框中的列

  10. 10

    基于现有列中变量值的Pandas数据框中的新列

  11. 11

    如何在Pandas数据框中的其他列中填充基于新列的值

  12. 12

    基于具有min函数的列比较创建新数据

  13. 13

    如何基于三角函数计算Pandas中的新列?

  14. 14

    如何基于三角函数计算Pandas中的新列?

  15. 15

    基于数据框中的两列创建新列

  16. 16

    Python:基于整数范围的值在Pandas数据框中创建组列

  17. 17

    如何基于数据框中的列条件应用函数

  18. 18

    如何基于数据框中的列条件应用函数

  19. 19

    pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

  20. 20

    Pandas:基于函数有效更新列值

  21. 21

    基于列的基于函数的索引

  22. 22

    基于过滤器在Pandas DataFrame中创建新列

  23. 23

    基于先前行的pandas数据框列

  24. 24

    Pandas 数据框基于值的列组合

  25. 25

    在pandas数据框中基于顺序的列重新排列

  26. 26

    创建一个函数以绘制计数图或基于数据框中列的数据类型绘制直方图

  27. 27

    从Pandas数据框中的其他列创建新列

  28. 28

    基于数组的pandas df中的新列

  29. 29

    创建一个函数以基于给定的参数(如列表和熊猫中的特定条件)在数据框中创建新行

热门标签

归档