Ich muss meine Daten für eine Genetik-Software neu formatieren, die jede Spalte in zwei geteilt werden muss, z. B. 0-> G G; 1-> A G; 2 -> A A;
. Die Ausgabedatei soll tabulatorgetrennt sein. Ich versuche, es in Pandas zu tun:Pandas: schreiben Tab-getrennte Datenrahmen mit Literal-Tabs ohne Anführungszeichen
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)
Was ist mir ein Fehler Error: need to escape, but no escapechar set
. Gibt es andere Möglichkeiten, es mit pandas
zu tun?
Anzahl der Spalten ist nicht begrenzt. Ihre Vorgehensweise hat fast für mich funktioniert, außer dass die Teile jeder ursprünglichen Spalte jetzt zwischen der linken und der rechten Hälfte der Matrix verteilt sind und ich sie sammeln musste, indem ich '.swaplevel (0,1, axis = 1) .sort_index (axis = 1) '. Sieht immer noch wie ein hacky Weg aus, um die Pandas auszutricksen. –