Python pandas 在每行后插入空行

oli*_*ive 8 python python-3.x pandas

您好,我正在尝试使用 pandas 在当前数据的每行后面插入 3 个空行,然后导出数据。例如,当前数据样本可以是:

name     profession
Bill      cashier
Sam        stock
Adam      security
Run Code Online (Sandbox Code Playgroud)

理想情况下我想要实现的目标:

name     profession
Bill      cashier
Nan         Nan
Nan         Nan
Nan         Nan
Sam        stock
Nan         Nan
Nan         Nan
Nan         Nan
Adam      security
Nan         Nan
Nan         Nan
Nan         Nan
Run Code Online (Sandbox Code Playgroud)

我已经尝试过 itertools,但是我不确定如何使用此方法在每行之后精确地获取三个空行。任何帮助、指导、样品都将不胜感激!

Bil*_*ill 8

我相信在数据帧上使用追加是相当低效的(每次都必须为整个数据帧重新分配内存)。

\n

DataFrame 旨在分析数据并轻松添加列\xe2\x80\x94,但不能添加行。

\n

所以我认为一个好的方法是创建一个正确大小的新数据框,然后将数据传输给它。最简单的方法是使用索引。

\n
# Demonstration data\ndata = 'name profession Bill cashier Sam stock Adam security'\ndata = np.array(data.split()).reshape((4,2))\ndf = pd.DataFrame(data[1:],columns=data[0])\n\n# Add n blank rows\nn = 3\nnew_index = pd.RangeIndex(len(df)*(n+1))\nnew_df = pd.DataFrame(np.nan, index=new_index, columns=df.columns)\nids = np.arange(len(df))*(n+1)\nnew_df.loc[ids] = df.values\nprint(new_df)\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
    name profession\n0   Bill    cashier\n1    NaN        NaN\n2    NaN        NaN\n3    NaN        NaN\n4    Sam      stock\n5    NaN        NaN\n6    NaN        NaN\n7    NaN        NaN\n8   Adam   security\n9    NaN        NaN\n10   NaN        NaN\n11   NaN        NaN\n
Run Code Online (Sandbox Code Playgroud)\n


PJ_*_*PJ_ 5

 insert_rows = 3   # how many rows to insert

 df.index = range(0, insert_rows * len(df), insert_rows)

 # create new_df with added rows
 new_df = df.reindex(index = range(insert_rows * len(df))) 
Run Code Online (Sandbox Code Playgroud)


djv*_*oli 2

如果您提供了更多有用的信息,但我想到的是使用此命令

df.append(pd.Series(), ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

这将向您的数据框添加一个空行,但正如您所看到的,您必须传递 set ignore_index=True,否则追加将无法工作。