簡體   English   中英

如何在python中的兩個DataFrame列中更改值

[英]How to change value in two DataFrame columns in python

我有一個6列的CSV文件。 我將其加載到內存中並通過某些方法進行處理。 我的結果是一個帶有4個列的數據框如下所示:

name number Allele Allele
aaa  111     A       B
aab  112     A       A
aac  113     A       B

但是現在我有了另一種格式的csv(沒有Illumina),我需要將其更改為上面的格式。

我有一個結果:

name number Allele1 Allele2
aaa  111     A       C
aab  112     A       G
aac  113     G       G

我知道如何更改格式,例如AG == AB,GG == AA,CC == AA(太)等。但這比for循環更好的方法嗎?

可以說:

for line in range(len(dataframe)):
 if(dataframe.Allele1[line] == A and dataframe.Allele2[line] == G):
    dataframe.Allele1[line] = A
    dataframe.Allele2[line] = B
 elif:
 etc.

我覺得這不是完成此任務的最佳方法。 在熊貓或Python中,Meaby是更好的方法嗎?

我需要將那格式更改為Illumina格式,因為數據庫處理了Illumina。

並且:在照度下AA = AA,CC,GG; AB = AC,AG,AT,CT,GT; BB = CG,TT等

So if row[1] in col Allele1 is A and in Allele2 is T, edited row will be: Allele1 =  A, Allele2 = B.

預期結果是:

name number Allele1 Allele2
 aaa  111     A       B
 aab  112     A       B
 aac  113     A       A

結果,我必須有一個4列。

您是否嘗試過使用pandas.DataFrame.replace? 例如:

df['Allele1'].replace(['GC', 'CC'], 'AA')

通過該行,您可以在“ Allele1”列中替換您要查找的AA的GC和CC值。 您可以將該邏輯應用於所需的所有替換,如果您希望在整個數據框中執行該替換,只是不指定該列,請執行以下操作:

df.replace(['GC', 'CC'], 'AA')

您可以嘗試這樣做(將AG轉換為AB):

df.loc[df['Allele1'] == 'A' & df['Allele1'] == 'G', 'Allele1'] = 'A'
df.loc[df['Allele1'] == 'A' & df['Allele1'] == 'G', 'Allele2'] = 'B'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM