python - 使用循环连接数据框的列 - 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('', '?')
推荐阅读
- android - 如何在 Kotlin 中显示来自 ArrayList 的随机数据?
- c++ - 如何将txt文件中的数字放入C++中的向量中
- jquery - 将用户通过引导模式上传的选定图像传递给控制器方法
- html - 将样式添加到 asp.net 按钮
- flutter - 来自完整开发人员指南课程 Udemy 165 的 Flutter Bloc 模式问题
- nginx - NGINX API 请求使用错误的 IP 值
- rust - 从拥有实体和借用实体的功能中移出?
- python - 使用 Sqlite 和 PyQT5 制作 TreeView
- c#-4.0 - 替换字符串中的数字
- python - 带有win32con的Python滚轮鼠标