python - Pandas:在数据框中每隔第二行插入一个空行

标签 python python-3.x pandas numpy dataframe

到目前为止,我有这段代码,每隔一行添加一行零( from this question ):

import pandas as pd
import numpy as np

def Add_Zeros(df):

    zeros = np.where(np.empty_like(df.values), 0, 0)
    data = np.hstack([df.values, zeros]).reshape(-1, df.shape[1])
    df_ordered = pd.DataFrame(data, columns=df.columns)

    return df_ordered

这会产生以下数据框:

    A   B
0   a   a
1   0   0
2   b   b
3   0   0
4   c   c
5   0   0
6   d   d

但我需要它每隔第二行添加一行零,如下所示:

    A   B
0   a   a
1   b   b
2   0   0
3   c   c
4   d   d
5   0   0

我尝试过更改代码,但每次都会收到一条错误,指出 Zeros 和 df 的大小不匹配。

我还应该指出,我的行和列比我在这里写的要多得多。

我该怎么做?

最佳答案

选项 1
使用groupby

s = pd.Series(0, df.columns)
f = lambda d: d.append(s, ignore_index=True)

grp = np.arange(len(df)) // 2
df.groupby(grp, group_keys=False).apply(f).reset_index(drop=True)

   A  B
0  a  a
1  b  b
2  0  0
3  c  c
4  d  d
5  0  0
<小时/>

选项 2

from itertools import repeat, chain

v = df.values

pd.DataFrame(
    np.row_stack(list(chain(*zip(v[0::2], v[1::2], repeat(z))))),
    columns=df.columns
)

   A  B
0  a  a
1  b  b
2  0  0
3  c  c
4  d  d
5  0  0

关于python - Pandas:在数据框中每隔第二行插入一个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47148170/

相关文章:

python - 除了计算之外,还可以使用现有数据框选择性地构建新数据框

python - matplotlib 不支持生成器作为输入

python - numpy 数组索引技术如何为相同的输入代码提供不同的输出?

python - 访问字典键元组的各个元素

python - 嵌套列表理解/合并嵌套列表

python - 为目录和所有子目录中的所有 Python 文件运行 Pylint

python - 用 Python 获取网页内容?

python - 仅比较 Pandas DataFrame 中两列日期时间对象之间的日期

python - 如何在 crunchbang linux 上安装 pandas 13

python - 在 python 中,如何测试类似字符串的对象是否可变?