我有两个熊猫数据帧;buffers_slots
和slots_vessels
两者都只包含0和1作为数据。
我正在研究一个容器分配问题,其中选择了多个容器并用于准备多个缓冲区。
缓冲器和容器之间的连接是概念上的“槽”。你知道吗
buffers_slots
数据帧告诉我每个缓冲区准备在哪个插槽中。
其中,每行和为一,即每个缓冲区只在一个插槽中。你知道吗
>>> buffers_slots
5 7 8
Buffer #24 0.0 0.0 1.0
Buffer #25 1.0 0.0 0.0
Buffer #26 1.0 0.0 0.0
Buffer #27 0.0 0.0 1.0
Buffer #28 0.0 1.0 0.0
Buffer #29 0.0 1.0 0.0
slots\u vessels数据框告诉我给定插槽中的容器大小(可能有空插槽,即每行总和为0或1)。也可以在多个槽中使用相同尺寸的容器,即每列的总和可以为0、1或多个)。你知道吗
>>> slots_vessels
1000 L 2000 L 3000 L 4000 L 5000 L 6000 L 7000 L 8000 L
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
5 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
7 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
8 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
我基本上想使用slots_vessels
数据框来翻译buffers_slots
数据框中的列名,即分别用'2000l'、'7000l'和'4000l'替换5、7、8,给出以下输出:
>>> buffers_vessels
2000 L 7000 L 4000 L
Buffer #24 0.0 0.0 1.0
Buffer #25 1.0 0.0 0.0
Buffer #26 1.0 0.0 0.0
Buffer #27 0.0 0.0 1.0
Buffer #28 0.0 1.0 0.0
Buffer #29 0.0 1.0 0.0
我认为解决方案可能包括创建一个dict映射槽到血管,例如:
>>> slots
{0: None, 1: None, 2: None, 3: None, 4: None, 5: '2000 L', 6: None, 7: '7000 L', 8: '4000 L'}
…但我不知道如何创造这样一个格言
或者,是否有一些简洁的映射/翻译方法来实现我的目标?你知道吗
以下是成功的秘诀:
输出:
插槽dict中的值有点误导,因为它表示每个空插槽中都有一个1000升的容器,但由于我们对空插槽不感兴趣,因此没有执行此错误。 如果存在这样一个函数来创建OP中所示的
slots
dict,那么最好用“where equal to 1”函数替换idxmax
函数如果每行最多只有一个
1.0
,则可以使用此处描述的函数查找与1.0
匹配的列来创建新的数据帧:Get column name where value is something in pandas dataframe
把它转换成
dict
d_cols
。你知道吗然后,您可以在刚刚创建的
dict
的帮助下替换列的名称:相关问题 更多 >
编程相关推荐