Это кажется простым, но это ставит меня в тупик. Кодирование каламбур предназначен.
У меня есть фрейм данных в следующем формате:
df = pd.DataFrame({"chrom":[12,12],
"Pos":[112233,112234],
"ref_base":["A","G"],
"alt_base":["T","C"],
"A":[12,22],
"T":[3,34],
"G":[12,23],
"C":[22,21]},
index=[0,1])
chrom Pos ref_base alt_base A T G C
12 112233 A T 12 3 23 22
12 112234 G C 22 34 23 21
Мне нужно найти способ создать новый столбец, содержащий значение из столбцов A, T, G или C, которое соответствует значению в столбце ref_base.
chrom Pos ref_base alt_base A T G C ref_val
12 112233 A T 12 3 23 22 12
12 112234 G C 22 34 23 21 23
Что я в конечном итоге пытаюсь сделать, так это создать столбец, содержащий кортеж (ref_val, alt_base_val), поэтому, если есть лучший способ сделать это, чем сначала создать отдельные столбцы и соединить их, я благодарен узнать, что это такое.
chrom Pos ref_base alt_base A T G C AD
12 112233 A T 12 3 23 22 (12,3)
12 112234 G C 22 34 23 21 (23,21)
Я видел ваш пост об этом, coldspeed, но не знал, как применить его к моей ситуации. Не дурак.
«Не знал, как это применить» не является причиной того, что это не обман. lookup — это именно то, что вы бы использовали. Это даже в ответе ниже.
Важно показать реализацию. Я попробовал этот метод. Ава не знала, как реализовать эту проблему. Тем не менее, у меня есть ответ.






Использование lookup
df['New']=tuple(zip(df.lookup(df.index,df.ref_base),df.lookup(df.index,df.alt_base)))
df
A C G Pos T alt_base chrom ref_base New
0 12 22 12 112233 3 T 12 A (12, 3)
1 22 21 23 112234 34 C 12 G (23, 21)
df.lookup(df.index, df.ref_base)Это обман.