Разделение столбца по разделителю Python и сохранение только новых имен - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы расширить вопрос: разделение столбца по разделителю pandas python

import pandas as pd

df = {'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']}

Теперь я хотел бы сохранить только новые имена:

df[['Name','allele']] = df['V'].str.split('-',expand=True)

Но df также хранит "V":

df 

    V           Name    allele
0   IGHV7-B*01  IGHV7   B*01
1   IGHV7-B*01  IGHV7   B*01

... Есть ли удобный ключ для этого? Я знаю, что могу сделать:

df.drop(columns='V', axis=1, inplace=True)

Я бы предпочел ключ вместо другой строки кода, как в моем проекте, я должен повторить то же самое несколько раз, и у меня там в общей сложности 25 имен.

1 Ответ

1 голос
/ 21 октября 2019

вы можете создать новый фрейм данных и использовать DataFrame.rename:

new_df=df['V'].str.split('-',expand=True).rename(columns={0:'Name',1:'Allete'})
print(new_df)

     Name allele
0   IGHV7   B*01
1   IGHV7   B*01
2   IGHV6   A*01
3    GHV6   A*01
4   IGHV6   A*01
5   IGHV6   A*01
6   IGHV4   L*03
7   IGHV4   L*03
8   IGHV5   A*01
9   IGHV5   A*04
10  IGHV6   A*02
11  IGHV6   A*02

, если вы не хотите создавать новый фрейм данных ивам нужно сохранить его в исходном фрейме данных и удалить «V» в одну строку, которую вы можете использовать pd.concat

df=pd.concat([df.loc[:,~df.columns.isin(['V','allete','Name'])],df['V'].str.split('-',expand=True).rename(columns={0:'Name',1:'allele'})],axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...