gpt4 book ai didi

python - Pandas 适用于 numpy interp,尺寸问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:35 24 4
gpt4 key购买 nike

我想将在一组动态频率下进行的测量插入到一组固定频率中。我将 Python 3.7 与 pandas.apply 和 numpy.interp 结合使用:

import numpy as np 
import pandas as pd

df = pd.DataFrame({'m1':[2.,3.],
'm2':[4.,6.],
'm3':[2.,3.],
'shift':[1.1,1.2]})
print (df)
# m1 m2 m3 shift
# 0 2.0 4 2.0 1.1
# 1 3.0 6 3.0 1.2

freqs =np.array([10.,20.,30.])

def myfunction(x):
newfreqs = freqs*x[-1]
result = np.interp(freqs,newfreqs,x[:-1])
return result

print(df.apply(myfunction, axis=1,raw=True))

当我运行代码时出现错误:

ValueError: Shape of passed values is (3, 2), indices imply (4, 2)

如果我将其中一个输入列更改为 int 类型,f.ex.

'f2':[4,6]

然后没有错误并返回正确答案

感谢任何帮助。

最佳答案

问题是您正在尝试返回一个数组,该数组不会减少。您可以改为返回值列表。

def myfunction(x):
newfreqs = freqs*x[-1]
result = np.interp(freqs, newfreqs, x[:-1])
return [*result]

df.apply(myfunction, axis=1, raw=True)
#0 [2.0, 3.6363636363636367, 2.5454545454545454]
#1 [3.0, 5.0, 4.5]
#dtype: object

如果您需要内插的 DataFrame,那么也许:

import pandas as pd

pd.DataFrame(df.apply(myfunction, axis=1 ,raw=True).tolist(),
columns=df.columns[0:3]).add_suffix('_interp')
# m1_interp m2_interp m3_interp
#0 2.0 3.636364 2.545455
#1 3.0 5.000000 4.500000

关于python - Pandas 适用于 numpy interp,尺寸问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53746994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com