Python:如何用零填充?

标签 python pandas numpy zero-padding

假设我们有如下数据框:

df = pd.DataFrame({ 'Col1' : ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c'],
        'col2' : ['0.5', '0.78', '0.78', '0.4', '2', '9', '2', '7',]
        })

我计算了 col1 中所有唯一值的行数。就像 a 有 4 行,bc 各有 2 行,方法是:

df.groupby(['Col1']).size()

我得到的输出是

Col1
a    4
b    2
c    2
dtype: int64

完成此操作后,我想检查 a、b、c 中哪一个具有最大行数(在本例中,a 具有最大行数)并填充其他(bc) 以及最大值和它们所具有的行之间的差值,带零(bc 各有 2 行,因为 4 是最大行数,所以我想用 2 个零填充 bc。必须在末尾添加零。

我想用零填充它,因为我想在所有变量(a、b、c)上应用一个固定大小的窗口来绘制图形。

最佳答案

您可以通过 GroupBy.cumcount 创建计数器, 创建 MultiIndexDataFrame.reindex通过 MultiIndex.from_product 创建的所有组合:

df1 = df.set_index(['Col1', df.groupby('Col1').cumcount()])

mux = pd.MultiIndex.from_product(df1.index.levels, names=df1.index.names)
df2 = df1.reindex(mux, fill_value=0).reset_index(level=1, drop=True).reset_index()
print (df2)
   Col1  col2
0     a   0.5
1     a  0.78
2     a  0.78
3     a   0.4
4     b     2
5     b     9
6     b     0
7     b     0
8     c     2
9     c     7
10    c     0
11    c     0

关于Python:如何用零填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281506/

相关文章:

python数据框如何将集合列转换为列表

python - python中链表的递归合并排序

python - 将文本文件中的整数存储到数组

python - Pandas 尽可能压平行

python - Numpy 整个矩阵与单行相乘

python - Pandas/Numpy 根据存在将行移入列

python - Python 2 和 Python 3 中 print 的细微差别

python - 在一个散点图中绘制两个 pandas 数据框

python - 创建字典时“int”对象不可迭代

python - 将 matplotlib 绘图轴设置为数据框列名称