我有以下数据框,我想添加一个包含百分比值的新列:
<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
答案 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)来避免此类消息