对数据框中单列中的 3 个选定部分和 8 个固定值应用定义
我正在尝试使用恒定坐标值和变化的风速值来插入值,这些值在一个文本文件中。使用这个定义:
def bary_interpol (inter_cor_x1, inter_cor_x2, inter_cor_x3, inter_cor_y1,
inter_cor_y2, inter_cor_y3, inter_cor_px, inteR_cor_py,
inter_wind_v1, inter_wind_v2, inter_wind_v3):
W_v1 = ((inter_cor_y2-inter_cor_y3)*(inter_cor_px-inter_cor_x3)+
(inter_cor_x3-inter_cor_x2)*(inter_cor_py-inter_cor_y3))/((inter_cor_y2-inter_cor_y3)*(inter_cor_x1-inter_cor_x3)+
(inter_cor_x3-inter_cor_x2)*(inter_cor_y1-inter_cor_y3))
W_v2 = ((inter_cor_y3-inter_cor_y1)*(inter_cor_px-inter_cor_x3)+
(inter_cor_x1-inter_cor_x3)*(inter_cor_py-inter_cor_y3))/((inter_cor_y2-inter_cor_y3)*(inter_cor_x1-inter_cor_x3)+
(inter_cor_x3-inter_cor_x2)*(inter_cor_y1-inter_cor_y3))
W_v3 = 1 - W_v1 - W_v2
inter_wind_pv = (W_v1 * inter_wind_v1) + (W_v2 * inter_wind_v2) + (W_v3 * inter_wind_v3)
return inter_wind_pv
这个定义现在对我有用,但前提是所有变量都是常数。但需要从文本文件添加 inter_wind_v1、inter_wind_v2 和 inter_wind_v3。
我已经通过与 FF 位于同一行的标识号找到了 (FF) 列中的值。 STN_V1实际上代表235。我使用了这个方法:
inter_wind_v1 = wind[wind['STN'] == STN_v1]
print(inter_wind_v1)
inter_wind_v2 = wind[wind['STN'] == STN_v2]
print(inter_wind_v2)
inter_wind_v3 = wind[wind['STN'] == STN_v3]
print(inter_wind_v3)
这将打印我需要的选定数据。
STN DT FF
10464 235 20210101 20
10465 235 20210101 30
10466 235 20210101 20
10467 235 20210101 20
10468 235 20210101 20
... ... ...
20923 235 20220312 40
20924 235 20220312 50
20925 235 20220312 50
20926 235 20220312 50
20927 235 20220312 60
[10464 rows x 3 columns]
STN DT FF
20928 242 20210101 80
20929 242 20210101 60
................................ etc.
但我无法弄清楚如何使用我进行插值的定义来创建新的列表或数据框。
因此,我试图创建一个插入的新列 FF,将定义中引用为 inter_wind_v 的三个 FF 列组合起来。
我希望任何人都可以帮助我解决这个问题。
I am trying to interpolate values with constant coordinate values and changing wind speed values which I have in one text-file. With using this definition:
def bary_interpol (inter_cor_x1, inter_cor_x2, inter_cor_x3, inter_cor_y1,
inter_cor_y2, inter_cor_y3, inter_cor_px, inteR_cor_py,
inter_wind_v1, inter_wind_v2, inter_wind_v3):
W_v1 = ((inter_cor_y2-inter_cor_y3)*(inter_cor_px-inter_cor_x3)+
(inter_cor_x3-inter_cor_x2)*(inter_cor_py-inter_cor_y3))/((inter_cor_y2-inter_cor_y3)*(inter_cor_x1-inter_cor_x3)+
(inter_cor_x3-inter_cor_x2)*(inter_cor_y1-inter_cor_y3))
W_v2 = ((inter_cor_y3-inter_cor_y1)*(inter_cor_px-inter_cor_x3)+
(inter_cor_x1-inter_cor_x3)*(inter_cor_py-inter_cor_y3))/((inter_cor_y2-inter_cor_y3)*(inter_cor_x1-inter_cor_x3)+
(inter_cor_x3-inter_cor_x2)*(inter_cor_y1-inter_cor_y3))
W_v3 = 1 - W_v1 - W_v2
inter_wind_pv = (W_v1 * inter_wind_v1) + (W_v2 * inter_wind_v2) + (W_v3 * inter_wind_v3)
return inter_wind_pv
This definition works for me now but only when all variables are constant. But the inter_wind_v1, inter_wind_v2 and inter_wind_v3 need to be added from the text-file.
The values in column (FF) I have already found by the identification number which is in the same row as the FF. STN_V1 actually stands for 235. I used this method:
inter_wind_v1 = wind[wind['STN'] == STN_v1]
print(inter_wind_v1)
inter_wind_v2 = wind[wind['STN'] == STN_v2]
print(inter_wind_v2)
inter_wind_v3 = wind[wind['STN'] == STN_v3]
print(inter_wind_v3)
This will print the selected data I needed.
STN DT FF
10464 235 20210101 20
10465 235 20210101 30
10466 235 20210101 20
10467 235 20210101 20
10468 235 20210101 20
... ... ...
20923 235 20220312 40
20924 235 20220312 50
20925 235 20220312 50
20926 235 20220312 50
20927 235 20220312 60
[10464 rows x 3 columns]
STN DT FF
20928 242 20210101 80
20929 242 20210101 60
................................ etc.
But I can not figure out how to make a new list or data frame with the definition I made to interpolate.
So I am trying to make a interpolated new column FF of combining the three FF's column referenced as inter_wind_v in the definition.
I hope anybody can help me with this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信这可能是满足您问题要求的一种方法:
输出:
我做出了以下假设:
STN_v1
、STN_v2
和STN_v3< 的示例值/code> 且数据帧内容
inter_wind_v1
、inter_wind_v2
和inter_wind_v3
的项目数量相同bary_interpol()
函数的其他参数是标量(常量),并且您希望使用相同的参数值重复调用该函数(inter_wind_v1
除外),<代码>inter_wind_v2和inter_wind_v3
I believe this may be a way to do what your question asks:
Output:
I have made the following assumptions:
STN_v1
,STN_v2
andSTN_v3
and the dataframe contentinter_wind_v1
,inter_wind_v2
andinter_wind_v3
bary_interpol()
function are scalars (constant), and that you want to call the function repeatedly using the same argument values except forinter_wind_v1
,inter_wind_v2
andinter_wind_v3