使用 pandas 数据框根据过滤条件删除其中一列的方括号
Remove Square brackets for one of the column based on filter condition using pandas dataframe
我有包含两列文本列和服务器列的数据框,在文本列中,我必须根据服务器列条件删除方括号,即[其中服务器列 == DEV]。
Input Dataframe
Text Column Server Column
['java error:404 URL not found'] DEV
['java error:500 internal server'] DEV
HTTP status 204 (No Content) PROD
HTTP status 200 created successfully PROD
Output Dataframe
Text Column Server Column
'java error:404 URL not found' DEV
'java error:500 internal server' DEV
HTTP status 204 (No Content) PROD
HTTP status 200 created successfully PROD
####################################################
I tried with below code but not working
data =data[data['server']== 'DEV']
data =data["nodes"].apply(lambda x: ",".join(x) if isinstance(x, list) else x) print(data)
But above code snippet is not working
如果您的列包含真实列表,您可以使用:
df['Text Column'] = df['Text Column'].mask(df['Text Column'].str.len() > 1) \
.str[0].fillna(df['Text Column'])
print(df)
# Output
Text Column Server Column
0 java error:404 URL not found DEV
1 java error:500 internal server DEV
2 HTTP status 204 (No Content) PROD
3 HTTP status 200 created successfully PROD
假设 df 是您的 DataFrame,此任务可以按如下方式完成。
dev_text = df[df['Server Column'] == 'DEV']['Text Column']
dev_text = dev_text.str.replace('[', repl = '', regex = False).str.replace(']', repl = '', regex = False)
df.loc[df['Server Column'] == 'DEV', 'Text Column'] = dev_text.values
我有包含两列文本列和服务器列的数据框,在文本列中,我必须根据服务器列条件删除方括号,即[其中服务器列 == DEV]。
Input Dataframe
Text Column Server Column
['java error:404 URL not found'] DEV
['java error:500 internal server'] DEV
HTTP status 204 (No Content) PROD
HTTP status 200 created successfully PROD
Output Dataframe
Text Column Server Column
'java error:404 URL not found' DEV
'java error:500 internal server' DEV
HTTP status 204 (No Content) PROD
HTTP status 200 created successfully PROD
####################################################
I tried with below code but not working
data =data[data['server']== 'DEV']
data =data["nodes"].apply(lambda x: ",".join(x) if isinstance(x, list) else x) print(data)
But above code snippet is not working
如果您的列包含真实列表,您可以使用:
df['Text Column'] = df['Text Column'].mask(df['Text Column'].str.len() > 1) \
.str[0].fillna(df['Text Column'])
print(df)
# Output
Text Column Server Column
0 java error:404 URL not found DEV
1 java error:500 internal server DEV
2 HTTP status 204 (No Content) PROD
3 HTTP status 200 created successfully PROD
假设 df 是您的 DataFrame,此任务可以按如下方式完成。
dev_text = df[df['Server Column'] == 'DEV']['Text Column']
dev_text = dev_text.str.replace('[', repl = '', regex = False).str.replace(']', repl = '', regex = False)
df.loc[df['Server Column'] == 'DEV', 'Text Column'] = dev_text.values