2017-06-28 29 views
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 

を。私のアプローチは、ファイルに書き込む前にフレームに黒い線を導入して、私の質問がどのくらいの頻度で空白の行を追加するのですか?180インデックスの後には?

は(RepeatTimeの両方がインデックスされていることに注意も)

たフレームは、このようなものになります。

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 

を私はまた、誰もがに提案することができますことを任意の代替的なアプローチに開いていると思いますこの形式のデータを余分な空白行を含むファイルに書き込みます。

ありがとうございます!

答えて

0

これは、1つのライン

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 
+0

こんにちはテッド、こんにちは、私は具体的には、質問に記載されている方法でリピートをフォーマットする必要があるということです。私は空白行を導入したいと思っていますが、私のワークフローの次の段階に必要なフォーマットを導入したいと思っています。しかし、提案をありがとう。 – CiaranWelsh

関連する問題