Mam wyzwanie w skrypcie Python / Pandas. Moje dane to tabela ekspresji genów, zorganizowana w następujący sposób:
Zasadniczo Indeks 0 zawiera oba badane stany, podczas gdy Indeks 1 zawiera informacje o genie zidentyfikowanym między próbkami.
Następnie chciałbym utworzyć tabelę z indeksami 0 i 1 blisko siebie, w następujący sposób:
Próbowałem wielu rzeczy, takich jak wygenerowanie listy indeksu 0, aby dołączyć do indeksu 1 ...
Uratujcie mnie, chłopaki, proszę!
Dziękuję Ci
2 odpowiedzi
Zakładając, że pierwszy wiersz nazw kolumn znajduje się w wierszu 0, a nazwy drugich kolumn w wierszu 1, spróbuj tego:
df.columns = [f'{c1}.{c2}'.strip('.') for c1,c2 in zip(df.loc[0], df.loc[1])]
df.loc[2:]
Powinien wyglądać tak
df.to_clipboard()
i wkleić wynik tutaj. PS możesz również użyć pd.read_clipboard()
pd.read_csv(file.csv, header=False).fillna('')
, aby przenieść plik do pand. Może to pomaga.
Zgodnie z komentarzem OP zmieniam funkcję add_suffix
.
Skonstruuj ramkę danych
s1 = "Gene name,Description,Foldchange,Anova,Sample 1,Sample 2,Sample 3,Sample 4,Sample 5,Sample 6".split(",")
s2 = "HK1,Hexokinase,Infinity,0.05,1213,1353,14356,0,0,0".split(",")
df = pd.DataFrame(s2).T
df.columns = s1
Zdefiniuj funkcję (zmień funkcję w zależności od różnych sytuacji)
def add_suffix(x):
try:
flag = int(x[-1])
except:
return x
if flag <= 4:
return x + '.Conditon1'
else:
return x + '.Condition2'
A następnie przypisz kolumny
cols = df.columns.to_series().apply(add_suffix)
df.columns = cols
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.