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,但是我不确定如何使用此方法在每行之后精确地获取三个空行。任何帮助、指导、样品都将不胜感激!
我相信在数据帧上使用追加是相当低效的(每次都必须为整个数据帧重新分配内存)。
\nDataFrame 旨在分析数据并轻松添加列\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)\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n
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)
如果您提供了更多有用的信息,但我想到的是使用此命令
df.append(pd.Series(), ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
这将向您的数据框添加一个空行,但正如您所看到的,您必须传递 set ignore_index=True,否则追加将无法工作。
| 归档时间: |
|
| 查看次数: |
58880 次 |
| 最近记录: |