Python中的Replace函数不起作用(其他答案没有解决我的问题)

2024-06-06 16:35:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这是一个重复的问题,但我尝试了其他问题的答案,我无法解决这个问题

总之,我想用“A”替换0,用“A B”替换1,用“B B”替换2,用“0”替换5

我的插补数据文件(datafile.txt)格式如下所示,我只想替换“Geno”列中的信息(在真正的数据集中,我有一百万行)

^{tb1}$

我使用的管道是:

import pandas as pd
#input file
fin = pd.read_table('dataframe.txt',sep = ' ', header=None)
df = pd.DataFrame(fin)
geno = (df.iloc[: , 1:])
id = (df.iloc[: , 0])
geno = pd.DataFrame(geno)
geno2 = geno.replace("0","A A ").replace("1","A B ").replace("2","B B ").replace("5","0 0 ")

我感谢你的帮助!我是在bash(使用awk)中完成的,但这需要很长时间。我决定试试Python,因为我相信它会更快。附言:我是Python的初学者。 再次感谢你


Tags: 数据答案txt信息dataframedf数据文件格式
2条回答

尝试:

df.Geno = df.Geno.astype(str).str.replace("0","A A ").str.replace("1","A B ").str.replace("2","B B ").str.replace("5","0 0 ")

输出:

  Sample                                          Geno
0    ID1  A B A B A A A B A A A B A B A B A B 0 0 A B 
1    ID2  A B B B A A A A A A A B B B A A A A B B B B 
2    ID3  A B B B A A 0 0 0 0 0 0 B B A A A A B B B B 
3    ID4  A B B B A A A A A A A B B B A A A A B B B B 

带有dictSeries Replace也是一个选项:

import pandas as pd

df = pd.DataFrame({
    'Sample': ['ID1', 'ID2', 'ID3', 'ID4'],
    'Geno': [11010111151, 12000120022, 12055520022, 12000120022]
})

df['Geno'] = df['Geno'].astype(str).replace({
    '0': ' A A',
    '1': ' A B',
    '2': ' B B',
    '5': ' 0 0'
}, regex=True).str.lstrip()

print(df)

df

  Sample                                          Geno
0    ID1   A B A B A A A B A A A B A B A B A B 0 0 A B
1    ID2   A B B B A A A A A A A B B B A A A A B B B B
2    ID3   A B B B A A 0 0 0 0 0 0 B B A A A A B B B B
3    ID4   A B B B A A A A A A A B B B A A A A B B B B

相关问题 更多 >