python - 对齐和填充不同长度和分辨率的数字列表的方法
问题描述
我有许多 n x 2 矩阵,如下所示:
距离 | 价值 | 距离.1 | 价值.1 | ... |
---|---|---|---|---|
-15 | 1 | -15 | 2 | ... |
-14.9 | 3 | -14.995 | 4 | ... |
-14.8 | 4 | -14.992 | 2 | ... |
... | ... | ... | ... | ... |
15 | 3 | 8.959 | 2 | ... |
... | ... | ... | ||
15.048 | 3 | ... |
距离列都从 -15 开始,都在 +15+-0.05 左右结束。
我的目标是计算(值列的)平均值,然后将这些值绘制为距离的函数。我坚持的是如何“对齐”所有距离,如下所示:
距离 | 价值 | 距离.1 | 价值.1 | 平均值 |
---|---|---|---|---|
-15 | 1 | -15 | 2 | 这个距离的平均值 |
钠 | 钠 | -14.995 | 4 | 这个距离的平均值 |
钠 | 钠 | ... | ... | 这个距离的平均值 |
-14.8 | 4 | -14.8 | 2 | 这个距离的平均值 |
... | ... | ... | ... | 这个距离的平均值 |
钠 | 钠 | 14.995 | 2 | 这个距离的平均值 |
15 | 2 | 15 | 3 | 这个距离的平均值 |
目前,我只是根据第一个距离列绘制所有值,这意味着列中比第一个矩阵长的所有数据点都将丢失。
这是一些代码。现在我知道这可以用 python 以外的其他语言解决,即使没有 pandas,但我在我的项目中使用它们来事先清理和过滤数据。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df0 = pd.DataFrame({'Distance':np.linspace(-15, 14.969, 100),
'Value':np.random.rand(100)})
df1 = pd.DataFrame({'Distance.1':np.linspace(-15, 15.034, 500),
'Value.1':np.random.rand(500)})
df = pd.concat([df0,df1], ignore_index=False, axis=1)
df['mean'] = df.filter(regex='Value').mean(axis=1)
df.plot(x='Distance', y='mean')
plt.show()
因此,使用上面的代码,距离没有对齐。我看到了两种解决问题的方法:
- 以某种方式添加 NaN 以填充较短列中的缺失值,同时对齐所有距离列中出现的距离。
- 以某种方式平均较长列中的值。因此,对于短列中的每个距离,长列中有 3 个距离,取这 3 个额外值的平均值,并用该平均值替换 3 个条目。
我认为,考虑到统计数据,第二种方法更好。因为使用第一种方法,与所有列中的距离值相比,仅出现在较长列中的值在平均值中的表现将被过度表示。
我猜想有一种非常聪明的方法可以将Lambda 表达式与 pandas 的DataFrame.apply结合使用。但我真的不知道该怎么做。(如何让 lambda 表达式查看除最长的列之外的所有列,反之亦然?如何将值添加到某些列而不是其他列?)
到目前为止,我已经想出了这个:
对于每一行,将距离列中的值与最长距离列的距离值进行比较。如果相同,则转到下一列,否则以某种方式插入 NaN 值并将下面行中的所有值向下移动,最长矩阵中的值除外(最长的两列)。
任何帮助表示赞赏。我敢肯定我不是第一个遇到这个问题的人,但我真的不知道如何用谷歌搜索它。
解决方案
推荐阅读
- c - 而函数C编程
- postgresql - 无法使用托管在 kubernetes 中的 Pyspark 从 PSQL 读取
- javascript - 除了 toString() 之外,还有其他方法可以查看函数的主体吗
- r - 在不使用循环的情况下创建所需的小标题
- reactjs - Can't store navigator.geolocation data in useffect, with a usestate
- php - 适用于 AWS S3 的 PHP 开发工具包使用 ARN 存储桶进行身份验证
- html - 为什么边距折叠不起作用?我错过了什么?
- android - 错误:无法解析 C:\Users\aNTA\AndroidStudioProjects\breaking\app\src\main\AndroidManifest.xml 中的 XML
- phpmyadmin - 如何在 centos 8 中更新 phpmyadmin?
- java - 从 url Java 解析 JSON 对象数组