【问题标题】:How do I create a computed column in Python?如何在 Python 中创建计算列?
【发布时间】:2015-01-27 00:28:19
【问题描述】:

我是 Python 新手,我正在尝试复制我在 SAS 中非常习惯的功能。我想创建一个新变量(数据列),其中包含使用同一行(记录)的现有变量(数据列)计算的结果。我希望这个新变量成为现有数据集的一部分。经过大量研究,我找不到关于这个特定主题的任何内容。数据集来自一个包含两列数值数据的 CSV 文件,行大小是先验未知的。我可以毫无问题地执行我需要的计算,但是试图扩展数据集以拥有第三列,我可以在其中放置结果是我卡住的地方。

import numpy as np

import pandas as pd

driver1_1_data = pd.read_csv(...)

for i in range(len(driver1_1_data.values[:,0])):
    MPS = np.sqrt((driver1_1_data.values[i,0]-driver1_1_data.values[i-1,0])**2+(driver1_1_data.values[i,1]-driver1_1_data.values[i-1,1])**2)

【问题讨论】:

  • 向我们展示几行 CSV 文件,以及计算第三列的公式
  • 尝试在您的问题中包含您尝试过的代码。
  • 有许多可能的不同解决方案,具体取决于您已经完成的工作......如果您向我们展示您的程序,您读取数据文件并准备计算的部分,您会变得更好答案。
  • “MPS”只是一个占位符,因为我还没有得到这个定义。

标签: python data-analysis


【解决方案1】:

如果您想计算特定特征(列)的值,可以使用pandas.DataFrame.apply() 功能。

例如你可以这样做:

driver1_1_data['New Calculated Col'] = driver1_1_data.apply(lambda: row: np.sqrt(row['col1']*row['col2']...))

此代码创建一个适当命名为New Calculated Col 的新列,并使用您在apply(lambda...) 中指定的计算填充它。显然,您会根据需要调整 lambda 中所做的工作,但我认为这会让您朝着正确的方向前进。

【讨论】:

  • 谢谢你,aus_lacy!这是一个巨大的帮助!
  • @someguy 如果我的解决方案帮助您解决了最初的问题,那么正常的 Stack Overflow 流程是在投票下接受带有复选标记的答案,以便未来可能有类似问题的 SO 用户您可以快速找到可行的解决方案。此外,对其他 SO 用户的帮助表示感谢的一个好方法是对他们的答案/用户进行投票。
  • 我试图给你投票,但系统不允许。我需要 15 名声望,而我刚刚开始使用该网站。至于这个解决我的问题,它没有。好像会的。但是在实施推荐的修复后,我收到了错误。在研究了错误之后,我似乎无法采用这种方法。
  • 我正在尝试获取第 i 行和第 i-1 行的 x,y 值之间的欧几里得距离。因此,执行此操作的最直接方法似乎是循环。我根本无法让您提供的解决方案在循环中工作。无论哪种方式,我都感谢您的帮助。
  • @someguy 如果您将错误发布到您的原始问题中,我可能会为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
相关资源
最近更新 更多