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或更高版本。
==
它是什么?
——
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
-------
队列有三个参数:
-分配给队列的数据帧
-分配的数据帧的最大允许大小。如果分配的数据帧的大小大于此参数,则管理函数将在下次调用时删除多余的行
-管理过程中队列的行为
队列中的项是大小为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或更高版本。