gpt4 book ai didi

python - 在python中连接数据框的列?

转载 作者:行者123 更新时间:2023-12-01 07:06:44 25 4
gpt4 key购买 nike

我使用以下代码生成了一个数据框:

# importing pandas as pd 
import pandas as pd

# Create the dataframe
df = pd.DataFrame({'Category':['A', 'B', 'C', 'D'],
'Event':['Music Theater', 'Poetry Music', 'Theatre Comedy', 'Comedy Theatre'],
'Cost':[10000, 5000, 15000, 2000]})

# Print the dataframe
print(df)

我希望生成一个组合所有三列的列表,并通过“_”删除空格,例如并删除所有尾随空格:-

[A_Music_Theater_10000, B_Poetry_Music_5000,C_Theatre_Comedy_15000,D_Comedy_Theatre_2000]

我希望以最优化的方式实现它,因为运行时间对我来说是一个问题。所以希望避免 for 循环。谁能告诉我如何实现这是最优化的方式?

最佳答案

最通用的解决方案是将所有值转换为字符串,使用join和最后的replace:

df['new'] = df.astype(str).apply('_'.join, axis=1).str.replace(' ', '_')

如果只需要过滤某些列:

cols = ['Category','Event','Cost']
df['new'] = df[cols].astype(str).apply('_'.join, axis=1).str.replace(' ', '_')

或者单独处理每一列 - 如有必要替换并将数字列转换为字符串:

df['new'] = (df['Category'] + '_' + 
df['Event'].str.replace(' ', '_') + '_' +
df['Cost'].astype(str))

或者在转换为字符串后添加_sum,但在替换后需要用rstrip删除traling _ :

df['new'] = df.astype(str).add('_').sum(axis=1).str.replace(' ', '_').str.rstrip('_')
<小时/>
print(df) 
Category Event Cost new
0 A Music Theater 10000 A_Music_Theater_10000
1 B Poetry Music 5000 B_Poetry_Music_5000
2 C Theatre Comedy 15000 C_Theatre_Comedy_15000
3 D Comedy Theatre 2000 D_Comedy_Theatre_2000

关于python - 在python中连接数据框的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58414752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com