pandas: schreiben Sie Registerkarte-getrennt dataframe mit den wörtlichen tabs ohne Anführungszeichen
Habe ich zum formatieren meiner Daten für ein Genetik-software, die erfordert, um split jede Spalte in zwei, e.g 0-> G G; 1-> A G; 2 -> A A;
. Die Ausgabe-Datei sein soll ist tab-getrennt. Ich bin versucht, es zu tun in pandas:
import csv
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,3, size = (10,5)),
columns=[ chr(c) for c in range(97, 97+5) ])
def fake_alleles(x):
if x==0:
return "A\tA"
if x==1:
return "A\tG"
if x==2:
return "G\tG"
plinkpast6 = df.applymap(fake_alleles)
plinkpast6.to_csv("test.ped", sep="\t", quoting=csv.QUOTE_NONE)
Gibt mir eine Fehlermeldung Error: need to escape, but no escapechar set
. Gibt es andere Möglichkeiten, es zu tun mit pandas
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
sep="\t"
versucht, auf jedes element der dataframe Zeile und fügen Sie ein"\t"
dazwischen. Problem ist, es gibt"\t"
in die Elemente, und es verwirrend ist es. Es will Sie zu entkommen diejenigen, die"\t"
s in die Elemente, und Sie haben nicht. Ich vermute, Sie wollen die endgültige Ausgabe in 6 Spalten.Versuchen Sie dies:
.swaplevel(0,1, axis=1).sort_index(axis=1)
. Sieht immer noch wie ein hacky-trick, mit dem diepandas
.