python - 如何将函数应用于熊猫数据框中的每一行?
问题描述
我对编码很陌生,所以这可能很简单,但到目前为止我找到的答案都没有以我能理解的方式提供信息。
我想获取一列数据并应用一个函数 (axe^bx),其中 a > 0 和 b < 0。在这种情况下,(x) 将是我数据每一行中的浮点值。
看看我到目前为止有什么,但我不知道从这里去哪里......
def plot_data():
# read the file
data = pd.read_excel(FILENAME)
# convert to pandas dataframe
df = pd.DataFrame(data, columns=['FP Signal'])
# add a blank column to store the normalized data
headers = ['FP Signal', 'Normalized']
df = df.reindex(columns=headers)
df.plot(subplots=True, layout=(1, 2))
df['Normalized'] = df.apply(normalize(['FP Signal']), axis=1)
print(df['Normalized'])
# show the plot
plt.show()
# normalization formula (exponential) = a x e ^bx where a > 0, b < 0
def normalize(x):
x = A * E ** (B * x)
return x
我可以显示此图像,但不能显示“标准化”数据...
谢谢你的帮助!
解决方案
您的代码几乎是正确的。
# normalization formula (exponential) = a x e ^bx where a > 0, b < 0
def normalize(x):
x = A * E ** (B * x)
return x
def plot_data():
# read the file
data = pd.read_excel(FILENAME)
# convert to pandas dataframe
df = pd.DataFrame(data, columns=['FP Signal'])
# add a blank column to store the normalized data
headers = ['FP Signal', 'Normalized']
df = df.reindex(columns=headers)
df['Normalized'] = df['FP Signal'].apply(lambda x: normalize(x))
print(df['Normalized'])
df.plot(subplots=True, layout=(1, 2))
# show the plot
plt.show()
我将apply
行更改为以下内容:df['FP Signal'].apply(lambda x: normalize(x))
. 它只需要 df['FP Signal'] 上的值,因为您不需要整行。lambda x
表示分配给 x 的当前值,我们将其发送到规范化。
你也可以写df['FP Signal'].apply(normalize)
哪个更直接更简单。使用 lambda 只是我个人的偏好,但很多人可能不同意。
一个小的补充是df.plot(subplots=True, layout=(1, 2))
在您更改数据框之后放置。如果您在更改数据框之前进行绘图,您将不会在绘图中看到任何变化。df.plot
实际上在做情节,plt.show
只是显示它。这就是为什么df.plot
必须在您处理完数据之后。
推荐阅读
- sql - 在位置名册中创建半小时间隔。只有打开和关闭时间可用的 SQL
- php - want to implement websockets using ratchet in php
- angular - 如何在焦点反应表单文本字段上打开角度模式?
- animation - 内联 SVG 动画功能
- php - WordPress插件创建触发器不起作用
- android - 来自 Rest API 的 android 的 Http 调用
- ruby-on-rails - 如何从 Rails 中的另一个控制器获取帖子的 ID?
- java - 在构建 Java 9 模块的 Gradle 项目中,资源文件放在哪里?
- python - 将 Pip 包转移到 conda
- javascript - 当我们将数字格式化为美国格式时如何将两个正则表达式合二为一