将计算的常量值添加到Python数据框中

时间:2017-01-22 16:36:51

标签: python pandas dataframe

我是Python的新手,我相信这是一个非常基本的问题(对不起),但我试图在这里寻找解决方案:Better way to add constant column to pandas data frame和此处:add column with constant value to pandas dataframe和在许多其他地方...

我有一个像这样的数据框"玩具"样本:

A    B  
10   5
20   12
50   200

我想添加新列(C),它将是A和B的最后数据单元的划分(50/200);所以在我的例子中,我想得到:

A    B    C
10   5    0.25 
20   12   0.25
50   200  0.25

我尝试使用此代码:

groupedAC ['pNr'] = groupedAC['cIndCM'][-1:]/groupedAC['nTileCM'][-1:]

但是我只在最后一个单元格中得到结果(我相信它是我的代码充当"指针"而不是数字的结果 - 但正如我所说的那样,我试图将我的结果转换为常量(甚至使用 temp 变量),但没有成功)。

我们将非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要使用.iloc[-1]而不是.iloc[-1:]对其进行索引,因为后者会返回一个系列,因此在分配回数据框时,需要匹配索引:

df.B.iloc[-1:]                         # return a Series
#2    150
#Name: B, dtype: int64

df['C'] = df.A.iloc[-1:]/df.B.iloc[-1:] # the index has to be matched in this case, so only
                                        # the row with index = 2 gets updated   
df
#   A   B   C
#0  10  5   NaN
#1  20  12  NaN
#2  50  200 0.25

df.B.iloc[-1]                          # returns a constant
# 150

df['C'] = df.A.iloc[-1]/df.B.iloc[-1]  # there's nothing to match when assigning the 
                                       # constant to a new column, the value gets broadcasted   
df
#   A   B   C
#0  10  5   0.25
#1  20  12  0.25
#2  50  200 0.25