Pandas在for循环中将float附加到列

2024-09-30 06:11:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有pandas DataFrame,我想在其中使用df中的元素进行一些计算,然后将计算出的数字附加到同一df中的单独列中。在

这是我现在的代码。在

def percentfunction(df):
    for i in range(100): 
        if df['month_number'][i] == 10:
            df = df['percent_october'][i].add([df['cellsum'][i]/octobersum])
        elif df['month_number'][i] == 11:
            df = df['percent_november'][i].add([df['cellsum'][i]/novembersum])
        elif df['month_number'][i] == 12:
            df = df['percent_december'][i].add([df['cellsum'][i]/decembersum])

AttributeError: 'numpy.float64' object has no attribute 'add'

我尝试过这段代码的各种实现,但总是收到一条错误消息。它要么到达最后一个元素,然后写入只包含最后计算的数字的列,要么在不应该添加任何内容的行中添加。在

欢迎批评!在

编辑:试图编辑代码。在

^{pr2}$

我至少让它运行,但这会在不应该的行中填充值。。。在

编辑2:这是我的数据帧的一个样本

>>> df.head()
      Index          month_number        month_text  \
0     Name1                    10           October     
1     Name1                    11           November    
2     Name1                    12           December    
3     Name2                    10           October     
4     Name2                    11           November    

  2000 Unnamed: 4 2001 Unnamed: 6     2002 Unnamed: 8 2003    ...     \
0  NaN        NaN  NaN        NaN      NaN        NaN  NaN    ...      
1  NaN        NaN  NaN        NaN      NaN        NaN  NaN    ...      
2  NaN        NaN  NaN        NaN      NaN        NaN  NaN    ...      
3  NaN        NaN  NaN        NaN  2898.68       3120  NaN    ...      
4  NaN        NaN  NaN        NaN      NaN        NaN  NaN    ...      

  Unnamed: 28 2013 Unnamed: 30  2014 Unnamed: 32 2015 Unnamed: 34 2016  \
0         NaN  NaN         NaN   NaN         NaN  NaN         NaN  NaN   
1         NaN  NaN         NaN   NaN         NaN  NaN         NaN  NaN   
2         NaN  NaN         NaN   NaN         NaN  NaN         NaN  NaN   
3         NaN  NaN         NaN   NaN         NaN  NaN         NaN  NaN   
4         NaN  NaN         NaN  1.26         127  NaN         NaN  NaN   

  Unnamed: 36   cellsum  
0         NaN      3899  
1         NaN      7922  
2         NaN      2181  
3         NaN      3121  
4         NaN       127

这是我的数据框,'cellsum'是该行中所有“未命名”单元格的总和。我通过对数据帧中所有的(例如十月的cellsums(october CellSum))求和来计算月总和。然后我想添加一个新列,其中cellsum的百分比是多少。我希望你能理解。在


Tags: 数据代码add元素编辑numberdf数字
2条回答

一个简单的修复方法是使用df.ix[]

df.ix[i,'percent_october'] = df.ix[i,'cellsum']/octobersum

如果你告诉我们df是什么样子的,我们可能会给你一个比不推荐的数据帧循环更聪明的解决方案

你应该避免和大熊猫在一起。你需要这样的东西,然后你可以操纵成你想要的任何格式:

df["percent_month"] = df.groupby("month_number").apply(lambda x: x/x.sum())

相关问题 更多 >

    热门问题