単一行の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
私がやろうとしているのは、3つおきの要素の後に、改行文字を次の行に追加して、上記のデータフレームが次のようになるようにすることです。
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
。
パンダを使ってそれを行うことはできますか?
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')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加