【发布时间】:2019-09-18 07:40:28
【问题描述】:
我正在尝试使用一个函数创建多个新的数据框列。但是,当我运行下面的简单代码时,我收到错误消息“KeyError:”['AdjTime1' 'AdjTime2'] not in index。”
如何更正此问题以将两个新列(“AdjTime1”和“AdjTime2”)添加到我的数据框中?
谢谢!
import pandas as pd
df = pd.DataFrame({'Runner':['Wade','Brian','Jason'],'Time':[80,75,98]})
def adj_speed(row):
adjusted_speed1 = row['Time']*1.5
adjusted_speed2 = row['Time']*2.0
return adjusted_speed1, adjusted_speed2
df[['AdjTime1','AdjTime2']] = df.apply(adj_speed,axis=1)
【问题讨论】:
-
这里不需要申请;简单获胜:
df['AdjTime1'] = df.Time*1.5然后为第二行再写一行。也许通过许多调整后的值,您可以使其更具功能性,但实际上不需要 2 行进行简单的乘法运算。 -
感谢您指出可能的重复,Sheldore,但我无法与我使用 .apply 和函数的示例相提并论。我还尝试通过分离两个新列来使用打包,但随后出现“太多值无法解包”错误。任何额外的帮助将不胜感激。谢谢!
-
谢谢,ALollz。我应该澄清一下。我上面的例子被大大简化了。在我的实际版本中,我尝试创建大约 10 个新列,这些列都依赖于有些相似的计算,这就是为什么我想使用单个函数来创建它们。
标签: python pandas dataframe apply