[英]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.join
和pd.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.