到目前为止,我有这段代码,每隔一行添加一行零( 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/