Python 如何在特定的空间向数据框中引入空行?
我有一个大熊猫数据框,看起来像这样:Python 如何在特定的空间向数据框中引入空行?,python,pandas,Python,Pandas,我有一个大熊猫数据框,看起来像这样: Repeat Time gene_x indep 1 0 5.776279 0 15 5.874170 0 30 5.755308 0 60 5.846254 0 90 5.631789 0 1
Repeat Time gene_x indep
1 0 5.776279 0
15 5.874170 0
30 5.755308 0
60 5.846254 0
90 5.631789 0
120 5.949003 0
150 5.795068 0
180 6.133209 0
2 0 5.620326 0
15 5.639778 0
30 5.808577 0
60 5.821405 0
90 5.805597 0
120 5.766372 0
150 6.041138 0
180 6.109810 0
3 0 5.791153 0
15 5.856052 0
30 5.930233 0
60 5.633090 0
90 5.940040 0
120 5.815974 0
150 6.026407 0
180 6.052912 0
Repeat Time gene_x indep
1 0 5.776279 0
15 5.874170 0
30 5.755308 0
60 5.846254 0
90 5.631789 0
120 5.949003 0
150 5.795068 0
180 6.133209 0
NaN NaN NaN
2 0 5.620326 0
15 5.639778 0
30 5.808577 0
60 5.821405 0
90 5.805597 0
120 5.766372 0
150 6.041138 0
180 6.109810 0
NaN NaN NaN
3 0 5.791153 0
15 5.856052 0
30 5.930233 0
60 5.633090 0
90 5.940040 0
120 5.815974 0
150 6.026407 0
180 6.052912 0
NaN NaN NaN
我需要将这些数据写入文件,每个文件一个基因,重复序列用一个空行隔开。我的方法是在写入文件之前在框架中引入黑线,所以我的问题是如何在每个180
索引后添加一个空行
(还要注意,Repeat
和Time
都是索引)
生成的帧应如下所示:
Repeat Time gene_x indep
1 0 5.776279 0
15 5.874170 0
30 5.755308 0
60 5.846254 0
90 5.631789 0
120 5.949003 0
150 5.795068 0
180 6.133209 0
2 0 5.620326 0
15 5.639778 0
30 5.808577 0
60 5.821405 0
90 5.805597 0
120 5.766372 0
150 6.041138 0
180 6.109810 0
3 0 5.791153 0
15 5.856052 0
30 5.930233 0
60 5.633090 0
90 5.940040 0
120 5.815974 0
150 6.026407 0
180 6.052912 0
Repeat Time gene_x indep
1 0 5.776279 0
15 5.874170 0
30 5.755308 0
60 5.846254 0
90 5.631789 0
120 5.949003 0
150 5.795068 0
180 6.133209 0
NaN NaN NaN
2 0 5.620326 0
15 5.639778 0
30 5.808577 0
60 5.821405 0
90 5.805597 0
120 5.766372 0
150 6.041138 0
180 6.109810 0
NaN NaN NaN
3 0 5.791153 0
15 5.856052 0
30 5.930233 0
60 5.633090 0
90 5.940040 0
120 5.815974 0
150 6.026407 0
180 6.052912 0
NaN NaN NaN
我也愿意接受任何其他方法,任何人都可以建议用额外的空行将这种格式的数据写入文件
提前谢谢 这在一行中起作用
df.append(df.loc[[(1, np.nan), (2, np.nan),(3, np.nan)]]).sort_index()
还有这个
df.append(df.reindex([(1, np.nan), (2, np.nan),(3, np.nan)])).sort_index()
还是这个
mi = pd.MultiIndex.from_product([[1,2,3], [np.nan]])
df.reindex(df.index.append(mi)).sort_index()
您可以创建一个新的多重索引,然后重新索引原始数据帧
time = df.index.get_level_values('Time').unique().tolist() + [np.nan]
repeat = df.index.get_level_values('repeat').unique().tolist()
mi = pd.MultiIndex.from_product([repeat, time], names=['repeat', 'Time'] )
df.reindex(mi)
gene_x indep
repeat Time
1 0 5.776279 0.0
15 5.874170 0.0
30 5.755308 0.0
60 5.846254 0.0
90 5.631789 0.0
120 5.949003 0.0
150 5.795068 0.0
180 6.133209 0.0
NaN NaN NaN
2 0 5.620326 0.0
15 5.639778 0.0
30 5.808577 0.0
60 5.821405 0.0
90 5.805597 0.0
120 5.766372 0.0
150 6.041138 0.0
180 6.109810 0.0
NaN NaN NaN
3 0 5.791153 0.0
15 5.856052 0.0
30 5.930233 0.0
60 5.633090 0.0
90 5.940040 0.0
120 5.815974 0.0
150 6.026407 0.0
180 6.052912 0.0
NaN NaN NaN
嗨,泰德,这个问题是,我特别需要以我在问题中描述的方式格式化重复。我理解引入空行的想法很奇怪,但这是我工作流程下一阶段所需的格式。谢谢你的建议。