我有一只熊猫的资料,如下所示:
df = pd.DataFrame({'id': [1,2,3],
'fea1':['high', 'med', ''],
'fea2': ['med', '', 'high'],
'fea3': ['low', 'high', 'low']})
id fea1 fea2 fea3
1 high med low
2 med high
3 high low我需要创建一个新的列fea,它将列fea1、fea2、fea3与分隔符/连接起来。忽略那些空细胞。
id fea1 fea2 fea3 fea
1 high med low high/med/low
2 med high med/high
3 high low high/low以下是我尝试过的:
df = pd.DataFrame({'id': [1,2,3],
'fea1':['high', 'med', ''],
'fea2': ['med', '', 'high'],
'fea3': ['low', 'high', 'low']})
df['fea'] = df['fea1']+'/' + df['fea2']+ '/' +df['fea3']
id fea1 fea2 fea3 fea
1 high med low high/med/low
2 med high med//high
3 high low /high/low在第2行和第3行,我有多余的额外/。有人知道如何在不创建额外的分隔符/的情况下连接这些列吗?谢谢。
发布于 2022-06-24 15:27:24
这将在列的开头和中间删除/。
df = pd.DataFrame({'id': [1,2,3],
'fea1':['high', 'med', ''],
'fea2': ['med', '', 'high'],
'fea3': ['low', 'high', 'low']})
df['Column'] = df[[x for x in df.columns.drop('id')]].apply(lambda x : '/'.join(x), axis = 1).str.replace('//', '/').str.strip('/')发布于 2022-06-24 15:23:06
使用apply和regex删除前导"/“
df['fea'] = df[['fea1','fea2','fea3']].apply(lambda x: "/".join(x.str.strip()), axis=1).replace(r'^/','', regex=True)
df id fea1 fea2 fea3 fea
0 1 high med low high/med/low
1 2 med high med//high
2 3 high low high/lowhttps://stackoverflow.com/questions/72746139
复制相似问题