python - 将函数应用于 pandas dataframe 并获得不同大小的 ndarray 输出

标签 python python-3.x pandas scipy

我的目标是获取数据帧的局部最大高度的索引。每列变化 3 到 5 个。

我尝试使用 apply 函数,但收到错误传递值的形状为 (736, 4),索引暗示 (736, 480)无法广播输入数组从形状(0)变为形状(1)

我的矩阵是480x736

这是我为 apply 函数编写的内容:

import numpy as np
import peakutils
df.apply(lambda x: peakutils.indexes(x, thres=0.02/max(x), min_dist=100))

这是我能够开始工作的内容:

indexes =[]
import numpy as np
import peakutils
for column in df:
    indexes.append(peakutils.indexes(df[column], thres=0.02/max(df[column]), min_dist=100))

索引的长度通常为 4,但有时我会多或少 1:

Out[32]: 
[array([ 12, 114, 217, 328, 433]),
 array([ 12, 116, 217, 325, 433]),
 array([ 64, 166, 283, 389]),
 array([105, 217, 326, 433]),
 array([105, 237, 390])]

我的猜测是,输出的问题来自于我不知道结果数据帧的形状。形状从一开始就无法确定。

如何将函数应用于输出大小和类型不同的 df?

最佳答案

pandas 正在尝试对数组做“某事”。您可以通过将 lambda 的返回值包装在 pd.Series

中来短路该“东西”

试试这个:

df.apply(lambda x: pd.Series(peakutils.indexes(x, thres=0.02/max(x), min_dist=100)))

关于python - 将函数应用于 pandas dataframe 并获得不同大小的 ndarray 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40027612/

相关文章:

python - pandas DataFrame KeyError : get list of missing keys

python - 为 python 3 urllib 打开调试输出

pandas:获取数组中的所有 groupby 值

python - 如何切片以日期字段为索引的数据框?

python - 条件计算数据框

python - 相关查询如何从公钥服务器获取公钥

python - 将元素从 BeautifulSoup 发送到 Selenium

Python 3 不通过 stat 检测符号链接(symbolic link)

python - 在单元测试 CI 期间模拟单击 PyQt5 QMessageBox 小部件中的按钮

python - 如何 count_values() 大于列计数