如何计算百分比并将其存储在新列中?

时间:2017-01-04 16:09:37

标签: python pandas

我有以下数据框,我想添加一个包含百分比值的新列:

<template is="dom-repeat" items="{{items}}" as="item">
  <child-el date="{{_computeDate(item.date)}}"></child-el><br />
  <child-el attr1="{{_someOtherConversion(item.prop1)}}"></child-el><br />
  <child-el attr2="{{_iPromiseAnyConversionCanBeDoneLikeThis(item.prop2)}}"></child-el><br />
</template>
<script>
  _computeDate: function(item) {
    //do date converstion
}

我希望获得一个新的columt df = TIME_1 TIME_2 80 150 120 20 ,用于存储来自TIME_1_PROC的{​​{1}}的百分比值。

这是我的代码,但会触发警告:

TIME_1

警告:

TIME_1 + TIME_2

3 个答案:

答案 0 :(得分:4)

这会创建一个新变量:

df['TIME1_PROC'] = (df.TIME_1 * 100 / (df.TIME_1 + df.TIME_2))

Out[27]: 
   TIME_1  TIME_2  TIME1_PROC
0      80     150   34.782609
1     120      20   85.714286

答案 1 :(得分:2)

一般来说......

快速阐述@ Imo的正确答案。大多数情况下,您最好创建和引用这样的列:

df['x'] 

而不是:

df.x

当你创建一个新变量时,你必须使用第一种方法。但即使对于现有变量,第一种方式也被认为是更好的,因为如果您碰巧有一个名为“index”的列,则可以避免潜在的错误。例如。如果键入df.index,是否会返回索引或名为“index”的列?当然,我们都有时会使用属性样式作为快捷方式,因此也许更合理的经验法则是只使用右侧的快捷方式。

这个特殊的例子......

所有这一切,大熊猫的行为似乎并不理想。你在这里收到的警告信息是熊猫中常见的警告信息,经常可以忽略(就像在这里一样)。但不幸的是,您没有收到有关尝试访问不存在的列的错误消息。并进一步考虑以下内容:

df['TIME_1_PROC']     # KeyError: 'TIME_1_PROC'

df.TIME_1_PROC

0    34.782609
1    85.714286
dtype: float64

因此,您的新列确实已创建,但是作为属性而不是列。为了在这里更明确,通常在我们使用属性样式引用时,它被pandas解释为引用列。但在这种情况下,它实际上 是一个属性(而这不是你想要的)。

答案 2 :(得分:0)

使用pd.set_option(&#39; chained&#39;,None)来避免此类消息