簡體   English   中英

使用循環的數據框的Concat列-Python

[英]Concat columns of a Dataframe using a loop - Python

我想使用循環來連接數據幀的幾列的值。

您可以找到實際的數據框:

 Artist_1                Artist_2   Artist_3
Lady Antebellum              ?         ?
Reba McEntire                ?         ?
Wanda Jackson                ?         ?
Carrie Underwood             ?         ?
       ?                     ?         ?
The Bellamy Brothers         ?         ?
Keith Urban          Miranda Lambert   ?
Sam Hunt                     ?         ?
Johnny Cash                  ?         ?
Johnny Cash            June Carter     ?
Highwaymen                   ?         ?
Loretta Lynn                 ?         ?
Sissy Spacek                 ?         ?
Loretta Lynn         Sheryl Crow    Miranda Lambert
Charley Pride                ?         ?

和預期的結果:

Artist
Lady Antebellum
Reba McEntire
Wanda Jackson
Carrie Underwood
?
The Bellamy Brothers
Keith Urban, Miranda Lambert
Sam Hunt
Johnny Cash
Johnny Cash, June Carter
Highwaymen
Loretta Lynn
Sissy Spacek
Loretta Lynn,  Sheryl Crow, Miranda Lambert
Charley Pride

這是使用pd.DataFrame.apply / str.joinpd.Series.replace一種方式來說明不存在名稱的實例:

import pandas as pd

df = pd.DataFrame({'Artist_1': ['A', 'B', '?', 'D', '?', 'E'],
                   'Artist_2': ['?', '?', '?', 'G', '?', 'I'],
                   'Artist_3': ['J', '?', '?', '?', 'M', 'N']})

df['Artist_All'] = df.apply(lambda x: ', '.join([i for i in x if i != '?']), axis=1)\
                     .replace('', '?')

print(df)

  Artist_1 Artist_2 Artist_3 Artist_All
0        A        ?        J       A, J
1        B        ?        ?          B
2        ?        ?        ?          ?
3        D        G        ?       D, G
4        ?        ?        M          M
5        E        I        N    E, I, N

或者,您可以使用列表推導:

df['Artist_All'] = [', '.join([i for i in x if i != '?']) for x in df.values]
df['Artist_All'] = df['Artist_All'].replace('', '?')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM