come ottenere un certo valore da colonna e aggiungere come nuova colonna in Python / Panda?

ho un datafame con informazioni data1 e vorrei aggiungere una colonna data2 contenente solo i nomi da data1:

       data1                                         data2
0      info  name: Michael Jackson      New York     Michael Jackson
1      info 12 name: Michael Jordan III Los Angeles  Michael Jordan III

sai come posso fare questo?

EN From: How to get certain value from column and add as new column in Python / Panda?

More similar articles:

1 Comment

  1. senza un delimitatore univoco, questo non è banale, dal momento che si hanno entrambi gli spazi all’interno di nomi, lunghezze multiple di nomi (2 parole, 3 parole), e una colonna finale che può anche avere più parole con spazi.

    dividendo la stringa si può ottenere questa soluzione parziale:

    df['data2'] = df['data1'].str.split(': ').str[-1]

    >>> print(df)
    
                                              data1                           data2
    0     info  name: Michael Jackson      New York   Michael Jackson      New York
    1  info 12 name: Michael Jordan III Los Angeles  Michael Jordan III Los Angeles

    se hai una lista di ‘città’ potresti essere in grado di realizzare la soluzione completa:

    def replace(string, substitutions):
        """Replaces multiple substrings in a string."""
        substrings = sorted(substitutions, key=len, reverse=True)
        regex = re.compile('|'.join(map(re.escape, substrings)))
        return regex.sub(lambda match: substitutions[match.group(0)], string)
    
    # List of cities to remove from strings
    cities = ['New York', 'Los Angeles']
    # Dictionary matching each city with the empty string
    substitutions = {city:'' for city in cities}
    
    # Splitting to create new column as above
    df['data2'] = df['data1'].str.split(': ').str[-1]
    # Applying replacements to new column
    df['data2'] = df['data2'].map(lambda x: replace(x, substitutions).strip())

    >>>print(df)
    
                                              data1               data2
    0     info  name: Michael Jackson      New York     Michael Jackson
    1  info 12 name: Michael Jordan III Los Angeles  Michael Jordan III

    credito al fabbro per la funzione di sostituzione.

Leave a Reply

Your email address will not be published. Required fields are marked *