熊猫:按值将单元格值分组到单独的列中

埃斯特·布莱克

我有一个带有多个偏移量列的pandas DataFrame:

        0       1       2       3        4         5          6
0  532201  577834  577837  839786  1003273       NaN        NaN
1  577834  577837  649835  839786  1003273       NaN        NaN
2  577834  577837  649835  839786  1003273       NaN        NaN
3  577834  577837  649839  649845   839785  839786.0  1003273.0
4  577834  577837  649839  839786  1003273       NaN        NaN
5  577834  577837  649839  839786  1003273       NaN        NaN
6  577834  577837  649839  839786  1003273       NaN        NaN

在缺失的位置插入NaN,-1或其他值时,是否可以通过单元格的值对列进行有效的分组/排序?

输出:

        0       1       2       3       4       5       6       7        8
0  532201  577834  577837     NaN     NaN     NaN     NaN  839786  1003273
1     NaN  577834  577837  649835     NaN     NaN     NaN  839786  1003273
2     NaN  577834  577837  649835     NaN     NaN     NaN  839786  1003273
3     NaN  577834  577837     NaN  649839  649845  839785  839786  1003273
4     NaN  577834  577837     NaN  649839     NaN     NaN  839786  1003273
5     NaN  577834  577837     NaN  649839     NaN     NaN  839786  1003273
6     NaN  577834  577837     NaN  649839     NaN     NaN  839786  1003273

列不需要以任何特定的方式进行排序,我只是想为上述每个值创建时间线图。

例如

.
.
.
649839       ======== 
577837  ================================
577834  ================================
532201  ===
         0    1    2    3    4    5    6
洛兹

您可以使用假人。stack,创建虚拟变量,并用于max在行中任何位置创建存在指标。

df1 = pd.get_dummies(df.stack().astype('int64')).max(level=0)

   532201   577834   577837   649835   649839   649845   839785   839786   1003273
0        1        1        1        0        0        0        0        1        1
1        0        1        1        1        0        0        0        1        1
2        0        1        1        1        0        0        0        1        1
3        0        1        1        0        1        1        1        1        1
4        0        1        1        0        1        0        0        1        1
5        0        1        1        0        1        0        0        1        1
6        0        1        1        0        1        0        0        1        1

如果要创建类似该图的内容,可以为每个列将虚拟变量乘以不同的常量(因此,它们在绘制时会偏移),将0替换为NaN,然后针对DataFrame的RangeIndex进行绘制。您可以使用图例来标记线条,也可以使用yticks和标签,因此列标签在y轴上。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(4, 4))

(df1.mul(np.arange(1, df1.shape[1]+1)).replace(0, np.NaN)
    .plot(ax=ax, marker='o', legend=False))

plt.yticks(np.arange(1, df1.shape[1]+1, 1))
ax.set_yticklabels(df1.columns)
plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将索引值复制到大熊猫中单元格值非零的列

根据另一列的值将矩阵的一列元素分组到单元格数组中

如何加入按第二列中的值分组的多个单元格

将熊猫中的单元格值替换为元组

根据熊猫中的单元格值索引列

迭代熊猫中的列并更改单元格的值-Python

熊猫将许多列分组为一列,其中每个单元格都是一个值列表

R - 将值从单元格复制到同一列中的空单元格

将单元格值复制到“ B”列中的第一个空单元格

将列中的单元格值与行中的单元格值相交?

在熊猫中获取单元格值

熊猫-根据单元格和列中的条件更改单元格值

将特定单元格中的值循环到 Excel 中的列

单元格模式值到列

将编辑过的单元格中的值复制到新单元格

熊猫:将单元格值与同一列下面的单元格值进行比较?

当单元格包含值时将列名收集到单个列中

Datagrid:将字符串值发布到DateTime列的单元格中

将列的值放在单元格中

将单元格中的多个值转换为列

熊猫按单元格值分解数据框

多行对单个单元格空间的分隔值在熊猫中具有分组依据

熊猫按列中的每个值分组

熊猫:设置单元格值到当前行的索引?

按两列分组,求和、计数并在单独的列中显示输出值(熊猫)

VBA脚本将列中的单元格值复制到另一列中给出的单元格地址

如何将一列中的每个单元格与熊猫中的特定值进行比较?

熊猫-使用搜索按每个单元格中的字符串值进行修改

Excel计算同一单元格中的单独值