用分隔符pandas python拆分列 [英] splitting a column by delimiter pandas python
本文介绍了用分隔符pandas python拆分列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些样本数据:
import pandas as pd
df = {'ID': [3009, 129,119,120,121,122,130,3014,266,849,174,844 ],
'V': ['IGHV7-B*01','IGHV7-B*01','IGHV6-A*01','GHV6-A*01','IGHV6-A*01','IGHV6-A*01','IGHV4-L*03','IGHV4-L*03','IGHV5-A*01','IGHV5-A*04','IGHV6-A*02','IGHV6-A*02'],
'Prob': [1,1,0.8,0.8056,0.9,0.805 ,1,1,0.997,0.401,1,1]}
df = pd.DataFrame(df)
看起来像
df
Out[25]:
ID Prob V
0 3009 1.0000 IGHV7-B*01
1 129 1.0000 IGHV7-B*01
2 119 0.8000 IGHV6-A*01
3 120 0.8056 IGHV6-A*01
4 121 0.9000 IGHV6-A*01
5 122 0.8050 IGHV6-A*01
6 130 1.0000 IGHV4-L*03
7 3014 1.0000 IGHV4-L*03
8 266 0.9970 IGHV5-A*01
9 849 0.4010 IGHV5-A*04
10 174 1.0000 IGHV6-A*02
11 844 1.0000 IGHV6-A*02
我想用'-'分隔符分隔'V'列,并将其移至名为'allele'的另一列
Out[25]:
ID Prob V allele
0 3009 1.0000 IGHV7 B*01
1 129 1.0000 IGHV7 B*01
2 119 0.8000 IGHV6 A*01
3 120 0.8056 IGHV6 A*01
4 121 0.9000 IGHV6 A*01
5 122 0.8050 IGHV6 A*01
6 130 1.0000 IGHV4 L*03
7 3014 1.0000 IGHV4 L*03
8 266 0.9970 IGHV5 A*01
9 849 0.4010 IGHV5 A*04
10 174 1.0000 IGHV6 A*02
11 844 1.0000 IGHV6 A*02
到目前为止,我尝试过的代码不完整,无法正常工作:
the code i have tried so far is incomplete and didn't work:
df1 = pd.DataFrame()
df1[['V']] = pd.DataFrame([ x.split('-') for x in df['V'].tolist() ])
或
df.add(Series, axis='columns', level = None, fill_value = None)
newdata = df.DataFrame({'V':df['V'].iloc[::2].values, 'Allele': df['V'].iloc[1::2].values})
推荐答案
使用矢量化的 查看全文