我不是巨 Python 高手,如果这是个愚蠢的问题,请原谅.

我已经导入了一个CSV,它已经导入到Pandas 中,叫做pw,看起来是这样的:


                 datetime  outlet  inlet  flow
0     2023-04-12 00:00:00    38.5   48.5   3.3
1     2023-04-11 23:55:00    38.5   48.0   3.0
2     2023-04-11 23:50:00    38.5   48.5   3.6
3     2023-04-11 23:45:00    38.5   48.0   3.3
4     2023-04-11 23:40:00    38.5   48.0   3.3
...                   ...     ...    ...   ...

我做了一些条件概率查找表:

pgf = pw.groupby('flow')['outlet'].value_counts()/pw.groupby('flow')['outlet'].count()
fgp = pw.groupby('outlet')['flow'].value_counts()/pw.groupby('outlet')['flow'].count()

可通过如下方式访问:

pgf[some flow value][some pressure value]
fgp[some pressure value][some flow value]

我想在pw中创建一个pgffgp列.我想我应该能够写下:

pw['p_p'] = pgf[pw['flow']][pw['outlet']]

我认为它将从每一行获取流量和出口值来计算概率值,并将其放在‘p_p’列中,但是当我运行它时,我得到以下消息:

KeyError:‘[38.5 38.5 38.5...47.5 47.5]不在索引中’

但我不明白,当pgf是用pw的数据创建的时候,怎么会这样

PGF为<class 'pandas.core.series.Series'>


我可以通过以下方式绕过此问题:

for i in range(len(pw)):
  flow = pw['flow'].loc[i]
  pres = pw['outlet'].loc[i]

然而,我觉得这肯定是实现这一目标的最慢方式

推荐答案

您面临的问题与多索引Pandas 系列的索引工作方式有关.像您所做的那样使用for循环肯定不是最有效的方法,尤其是在处理大型数据集时.相反,您可以使用带有lambda函数的.apply()方法来访问多索引系列.

pw['p_p'] = pw.apply(lambda row: pgf.get((row['flow'], row['outlet']), 0), axis=1)
pw['f_p'] = pw.apply(lambda row: fgp.get((row['outlet'], row['flow']), 0), axis=1)

我在DataFramepwaxis=1上使用了apply方法(这意味着您是按行应用函数).对于每一行,我使用lambda函数来查找pgffgp系列中的值. 然后,我使用该系列的get方法来处理密钥不存在的可能性(在这种情况下,它将返回0,但您可以根据需要修改它).

Python相关问答推荐

自定义新元未更新参数

过载功能是否包含Support Int而不是Support Int?

在Pandas框架中截短至固定数量的列

将HTML输出转换为表格中的问题

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

标题:如何在Python中使用嵌套饼图可视化分层数据?

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

如何在Python中并行化以下搜索?

mypy无法推断类型参数.List和Iterable的区别

Python中的变量每次增加超过1

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

从Windows Python脚本在WSL上运行Linux应用程序

如何在Pyplot表中舍入值

根据客户端是否正在传输响应来更改基于Flask的API的行为

如何在信号的FFT中获得正确的频率幅值

Python如何导入类的实例

极柱内丢失类型信息""