2017-07-14 1 views
0

私はtsvファイルを1行だけ持っています。単一行のtsvファイルを複数行のtsvファイルに変換する

例えば:私はするつもり何

onset duration stimulus 16.100000 3.000000 tasteless 26.700000 3.000000.1 control 31.700000 ... 150.6 729.900000 3.000000.60 rinse.26 745.600000 3.000000.61 112.5cal.6 751.600000 3.000000.62 rinse.27 

0 rows × 192 columns 

は、次のように上記のデータフレームが見えるはずですので、つまり次の行に改行文字を追加し、すべての第三の要素AFTE、次のとおりです。

onset duration stimulus 
16.100000 3.000000 tasteless 
26.700000 3.000000 control 
31.700000 3.000000 rinse 
48.400000 3.000000 tasteless 
60.000000 3.000000 tasteless 
76.600000 3.000000 tasteless 
91.300000 3.000000 tasteless 
103.900000 3.000000 0cal 
111.900000 3.000000 rinse 
127.600000 3.000000 0cal 
131.600000 3.000000 rinse 
150.2000 

試しました

"\n".join(["\t".join(df[i:i+3]) for i in range(0,len(df),3)]) 

しかし助けがありません。また、dtaframeをテキストに変換して、すべての3番目の\t\nに置き換えてみました。

パンダを使ってやりますか?

答えて

0

tsvを読み込んで値を変更し、新しいデータフレームを作成することができます。

In [428]: df = pd.read_csv('test.tsv', header=None, delim_whitespace=True); df.values 
Out[428]: 
array([['onset', 'duration', 'stimulus', 16.1, 3.0, 'tasteless', 26.7, 
     '3.000000.1', 'control', 31.7, '...', 150.6, 729.9, '3.000000.60', 
     'rinse.26', 745.6, '3.000000.61', '112.5cal.6', 751.6, 
     '3.000000.62', 'rinse.27']], dtype=object) 

In [434]: cols = df.values.reshape(-1, 3) 

In [435]: df = pd.DataFrame(cols[1:], columns=cols[0]); df 
Out[435]: 
    onset  duration stimulus 
0 16.1   3 tasteless 
1 26.7 3.000000.1  control 
2 31.7   ...  150.6 
3 729.9 3.000000.60 rinse.26 
4 745.6 3.000000.61 112.5cal.6 
5 751.6 3.000000.62 rinse.27 

はこの後、TSVに書き戻すことは簡単です:

In [440]: df.to_csv('out.tsv', sep='\t') 
関連する問題