Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在中的另一列中创建具有值的新列_Python_Pandas - Fatal编程技术网

Python 在中的另一列中创建具有值的新列

Python 在中的另一列中创建具有值的新列,python,pandas,Python,Pandas,Hel,lo我有一个数据帧,例如: Groups Names COLs COLe G1 ABC_DEF.1:2-300():Canis_lupus 2 300 G1 SDDD1 NA NA G1 SKUD.2. NA NA G1 SEQUENCE3

Hel,lo我有一个数据帧,例如:

Groups   Names                          COLs  COLe
G1     ABC_DEF.1:2-300():Canis_lupus    2     300
G1     SDDD1                            NA    NA
G1     SKUD.2.                          NA    NA
G1     SEQUENCE3                        NA    NA
G1     ABC_DEF.1:400-600():Canis_lupus  400   600
G1     IJK_LMN.1:20-200():Bos_taurus    20    200
G2     OP_D:500-1000():Felis_catus      500   1000
G2     JDJDJ99                          NA    NA
我想添加一个新的列
Names2
,并将it内容中所有
名称
不包含
()
,与内容中包含
()
的每个
名称
进行分组:

产出将是:

Groups   Names                          Names2    COLs  COLe
G1     ABC_DEF.1:2-300():Canis_lupus    SDDD1     2     300
G1     ABC_DEF.1:2-300():Canis_lupus    SKUD.2.   2     300
G1     ABC_DEF.1:2-300():Canis_lupus    SEQUENCE3 2     300
G1     ABC_DEF.1:400-600():Canis_lupus  SDDD1     400   600
G1     ABC_DEF.1:400-600():Canis_lupus  SKUD.2.   400   600
G1     ABC_DEF.1:400-600():Canis_lupus  SEQUENCE3 400   600
G1     IJK_LMN.1:20-200():Bos_taurus    SDDD1     20    200
G1     IJK_LMN.1:20-200():Bos_taurus    SKUD.2.   20    200
G1     IJK_LMN.1:20-200():Bos_taurus    SEQUENCE3 20    200
G2     OP_D:500-1000():Felis_catus      JDJDJ99   500   1000
有人有使用熊猫的想法吗

df1 = df[df.Names.str.contains('()', regex=False)]
df2 = df[~df.Names.str.contains('()', regex=False)][['Groups', 'Names']]

print( pd.merge(left=df1, right=df2, on='Groups').rename(columns={"Names_x": "Names", "Names_y": "Names2"}) )
印刷品:

  Groups                            Names   COLs    COLe     Names2
0     G1    ABC_DEF.1:2-300():Canis_lupus    2.0   300.0      SDDD1
1     G1    ABC_DEF.1:2-300():Canis_lupus    2.0   300.0    SKUD.2.
2     G1    ABC_DEF.1:2-300():Canis_lupus    2.0   300.0  SEQUENCE3
3     G1  ABC_DEF.1:400-600():Canis_lupus  400.0   600.0      SDDD1
4     G1  ABC_DEF.1:400-600():Canis_lupus  400.0   600.0    SKUD.2.
5     G1  ABC_DEF.1:400-600():Canis_lupus  400.0   600.0  SEQUENCE3
6     G1    IJK_LMN.1:20-200():Bos_taurus   20.0   200.0      SDDD1
7     G1    IJK_LMN.1:20-200():Bos_taurus   20.0   200.0    SKUD.2.
8     G1    IJK_LMN.1:20-200():Bos_taurus   20.0   200.0  SEQUENCE3
9     G2      OP_D:500-1000():Felis_catus  500.0  1000.0    JDJDJ99
印刷品:

  Groups                            Names   COLs    COLe     Names2
0     G1    ABC_DEF.1:2-300():Canis_lupus    2.0   300.0      SDDD1
1     G1    ABC_DEF.1:2-300():Canis_lupus    2.0   300.0    SKUD.2.
2     G1    ABC_DEF.1:2-300():Canis_lupus    2.0   300.0  SEQUENCE3
3     G1  ABC_DEF.1:400-600():Canis_lupus  400.0   600.0      SDDD1
4     G1  ABC_DEF.1:400-600():Canis_lupus  400.0   600.0    SKUD.2.
5     G1  ABC_DEF.1:400-600():Canis_lupus  400.0   600.0  SEQUENCE3
6     G1    IJK_LMN.1:20-200():Bos_taurus   20.0   200.0      SDDD1
7     G1    IJK_LMN.1:20-200():Bos_taurus   20.0   200.0    SKUD.2.
8     G1    IJK_LMN.1:20-200():Bos_taurus   20.0   200.0  SEQUENCE3
9     G2      OP_D:500-1000():Felis_catus  500.0  1000.0    JDJDJ99

名称(例如jdj99)是否总是按行顺序跟随原始字符串名称?对不起,我不明白这个问题?你是说没有()的名字总是跟在带()的名字后面吗?是的答案是否你如何将名称与哪个名称联系起来?例如,SDDD1分配给“ABC_DEF.1:2-300():Canis_lube”的逻辑是什么?仅仅是因为它一直跟随它,直到出现新的名称ID?此外,这些是“NA”字符串还是Nan?放入名称2中的名称都是字符串中没有
()
的名称(例如:SDDD1),并分配给字符串中有
()
的所有名称,以及组内所有可能的组合。这就是为什么
ABC_DEF.1:2-300():Canis_lube,BC_DEF.1:400-600():Canis_lube和IJK_LMN.1:20-200():Bos_taurus
都没有
()
SDDD1、SKUD.2和SEQUENCE3
)就分配了这三个名字。和NA是'NA'名称(例如jdj99)是否总是按行顺序跟随原始字符串名称?抱歉,我不明白这个问题?你是说没有()的名字总是跟在带()的名字后面吗?是的答案是否你如何将名称与哪个名称联系起来?例如,SDDD1分配给“ABC_DEF.1:2-300():Canis_lube”的逻辑是什么?仅仅是因为它一直跟随它,直到出现新的名称ID?此外,这些是“NA”字符串还是Nan?放入名称2中的名称都是字符串中没有
()
的名称(例如:SDDD1),并分配给字符串中有
()
的所有名称,以及组内所有可能的组合。这就是为什么
ABC_DEF.1:2-300():Canis_lube,BC_DEF.1:400-600():Canis_lube和IJK_LMN.1:20-200():Bos_taurus
都没有
()
SDDD1、SKUD.2和SEQUENCE3
)就分配了这三个名字。和NA是“NA”