pandas数据帧的内容管理装饰器

dfqueue的Python项目详细描述


dfqueue
==


它是什么?
——


dfqueue是用于数据帧行管理的函数集合。行的删除优先级由它们在专用队列中的位置定义。

dfqueue可以分为三个不同的部分:
-为每个选定的数据帧分配特定的队列(*assign_dataframe*函数)
-在队列(*adding*decorator)
-根据相关队列中的项目管理数据帧(*manageing*decorator)

[![pypi][pypi image]][pypi url]

[pypi image]:https://img.shields.io/pypi/v/dfqueue.svg?style=flat
[pypi url]:https://pypi.org/project/dfqueue


-------

,但*assign\u dataframe*函数可以重置特定队列并修改其参数。


队列有三个参数:
-分配给队列的数据帧
-分配的数据帧的最大允许大小。如果分配的数据帧的大小大于此参数,则管理函数将在下次调用时删除多余的行
-管理过程中队列的行为

队列中的项是大小为2的元组*(a,b)*,包含:
-*a*:的标签相关行。每个队列项表示分配的数据帧中的一行。如果标签不存在,则在下一个管理函数调用期间将删除并忽略该项
-*b*:包含指定数据帧的列名称及其在管理过程中用于检查的值的字典。如果项中的列值与指定数据帧中的列值不对应,则在下一个管理函数调用期间将删除并忽略项


队列演化示例:

---————————————————————————————————————————————————————————————————————————————————————————————————+=======+===========+=+=+==+=+——+——+——+

+——+——+——+


————————————————————————————————————————————————————————————————————————————————————————————————+=======+===========+===========++————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————#与列a和列b一起添加的行作为检查列
————————————————A列:2})
+-——+——+——+——+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|4 5(第4行,{A列:6,B列:7})
+——+——+——+——+——+——————+———————————————————————————————————————————————————————————————————————————————————————————————————————————仅将<;列a>;作为检查列
——————————————————————————————————————————————————————————————————————————————————————————————————/>+——+——+——+——+————+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|第3行4 5(第4行,{A列:6,B列:7})
+——+——+——+——+——+——————+———————————————————————————————————————————————————————————————————————————————————————————————+--——+——+——+——+——+————————————————————————————————————————————————————————————————————————————————————————————————————————————大小:4)队列
+——+——+——+——+——+——+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————---———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————B:5})
+——+——+——+——+——+——————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————----+
第4行第6行第7行(第2行{A列:200})
+——+——+——+——+————+————————————————————————————————————————————————————————————————————————————————————————|
+——+——+——+——+——+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————r/>已达到数据帧ID的最大大小。是时候调用管理函数了…



---++--————+
A列| B列(第4行,{A列:6,B列:7})
+=+=+==+===+==+===+==+==+=+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————---——+—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————||(第6行,{A列:2})
+——+——+——+——+——+——+————————+—————————————————————————————————————————————————————————————————————————————————————————————————————————(第2行,{column a:2})>;被忽略,因为<;column a>;值不对应。
如果所选行为是最后一项:<;(第2行,{column a:2})>;被忽略,因为这不是只有<;column a>;作为检查列的<;第2行>;的最后一项。


示例!
——


游戏室有6个客户,但只有3个拱廊,经理希望为玩家增加挑战。他创建了以下规则:
-每10分钟一个播放器被另一个客户端替换一次(即一个会话)。
-替换的播放器是指在该会话和前一个会话之间没有赢得额外的级别(如果未选择任何或多个,则将选择列表中的第一个)。
-如果玩家达到第5级,他将是一个被替换的玩家。

初始化:

`` python
从pandas导入数据帧,series
从dfqueue导入randint
从dfqueue导入assign\u数据帧,管理,添加,queuebehavior

arcades\nb=3
max\u level=5
checking_-columns=['剩余水平]
arcade_-room=dataframe(columns=checking_-columns)


>cliclients=[
'bob',
'jack',
'tom',
'donald',
'arnold',
'william'

````

>dataframe赋值:

`` python
=`为数据框(arcade_-room,arcade_-room,arcade_-arcade_-dataframe)赋值。注意,检查"队列行为"列,队列行为=队列行为。所有项)
```


添加和管理函数创建:

```python
@management()
@adding()
def new_session(new_players_nb=1):
current_players=list()

当前玩家
在游戏室中标记。索引:
剩余等级=游戏室。在[标记,'剩余等级']
选择介于0和之前剩余等级之间的随机值
新的剩余等级=randint(0,剩余等级)
如果还有新的级别!=剩余水平:
如果新的剩余水平!=0:
更新数据框中的行
拱廊房间。在[标签,'剩余玩家等级']=新的剩余玩家等级
在队列中添加项目
当前玩家。追加((标签,{剩余玩家等级':新的剩余玩家等级s})
其他:
拱廊房间。放置([label],inplace=true)

.at[new_player[0]]=series(data=new_player[1])
当前玩家。append(new_player)

r/>
`` python
`直接添加3个玩家,因为游戏室是空的
新游戏(3)
```

结果:

)#队列
+——+——+——+——+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-——+
bob 5(杰克,{剩余等级:5})
+——+——+——+——+——+——————+————————+——————————————————————————————————————————————————————————————————————————————————+--——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————流程:

拱廊房间(最大尺寸:3)队列
+——+——+——+——+——+————+————+————+——————————————————————————————————————————————————————————————————————————————————————————————+===============+========++???+
bob 3(杰克,{剩余的水平:5})
+???+???+???+???+???+???+???+???+
杰克4||(汤姆,{剩余的水平:5})
+——+——+——+——+——+————+————+————————————————————————————————————————————————————————————————————————————————————————---++--——————————————————————————————————————————————————————————————————————————————————————Aining_level:5})
+---------------------------+


Tom的项目未添加到队列中,因为他没有获得级别。


管理过程(和最终结果):

#队列
+——+——+——+——+——+——————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————--+
bob 3(杰克,{剩余等级:4})
+——+——+——+——+——+————+——————+——————————————————————————————————————————————————————————————————————————————————+---——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————流程:

拱廊房间(最大尺寸:3)队列
+——+——+——+——+——+————+————+————+——————————————————————————————————————————————————————————————————————————————————————————————+===============+=======++???+
bob 3(杰克,{剩余的水平:4})
+???+???+???+???+???+???+???+???+
杰克2||(唐纳德,{剩余等级:5})
+———————————————————————————————————————————————————————————————————-————+
arnold 5(杰克,{剩余水平:2})
+——+——+——+——+————+——————+——————+—————————————————————————————————————————————————ing_level:5})
+---------------------------+


鲍勃的项目不会添加到队列中,因为他没有获得级别。
唐纳德被替换,因为他获得了5个级别。


因为未达到数据帧的最大大小。

---++————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————||(杰克,{剩余等级:4})
+——+——+——+——+——+——+————+————+——+————+———————————————————————————————————————————————————————————————————————————————————————————--————+
arnold 3(杰克,{剩余水平:2})
+——+——+——+——+————+————+——————+
威廉5(arnold,{雷米尼ng_级:5})
+——+——+——+——+——+——+————+——+——+——
(bob,{剩余的_级:1})
+—————————————————————————————————————--——+
(杰克,{剩余等级:1})
+---------------------------+
(阿诺德,{剩余等级:3})
+————+
(威廉,{剩余等级:5})——
+————+——+——+——

NG过程(和最终结果):

+====+=+===+===+===+===++——+————+————+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————ld 3(william,{剩余等级:5})
+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————/>----

-dfqueue不支持具有行多索引的数据帧。
-具有多个删除行的管理进程比仅具有一个删除行的多个管理进程更快。
-支持pandas 0.23.4或更高版本。




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Google应用程序引擎FreeMarker模板java。安全AccessControlException   在Java中,空字符串(“”)如何存储在内存中?   java如何使用PUT进行创建   java无法构造com的实例。谷歌。云数据存储。钥匙   Java递归中的堆栈溢出错误   java通过结构化设计模式重构冗余代码   javascript使用Selenium IDE 2.9.1上传文件   JAVAutil。扫描仪在Java中将文本文件加载到对象中   这个JAVA程序的时间复杂度是多少   java Springboot+tomcat+ssh=连接链路故障   矢量Java不安全操作   用于Java不同生成代码的协议缓冲区gRPC protobuf生成器   java OSGi为什么我的包命名为“unknown0.0.0”和MANIFEST。MF文件被覆盖了吗?   java日期保持为空(Android)   使用stax解析器java解析xml   java有一种方法可以在运行时确定对象是否是使用Lambdaj创建的。关于()方法?