如何将列值映射到另一个熊猫列中的格式化字符串(% 格式)?



我有一个熊猫数据帧(df(,其中包含df[‘Message’]、df[‘value1’]、df[‘value2’]。。。等"["Message"]列中的消息是格式化字符串,例如:'CPU-值:%d,事件类型:%s,..,..'">

我的目标是用其他列['value1']和['value2']中的值替换['Message']中的%d或%s。。。

以下方法不起作用:(它只适用于{}格式的字符串(

for index, row in df['Message'].items():
df['Message'] = df['Message'][index].format(str(df['value1'][index]), ......)

关于如何用其他列的值替换变量/格式化字符串,有什么建议吗。

由于df['Message']中的变量都应该以相同的方式格式化(%d、%s等的顺序相同(,因此您可以只使用str.replace(str1,str2,occurrencies):

df = pd.DataFrame({'mes':[ 'CPU-Value: %d, Event-Type: %s'],'d':[1],'s':['a']})
def formatter(a,b,c):
a = a.replace('%d',str(b),1)
a = a.replace('%s',str(c),1)
return a
df['formatted'] = df.apply(lambda x: formatter(x['mes'],x['d'],x['s']), axis=1)

您可以使用df.apply:将函数(例如格式(应用于轴(例如通过轴=1的每行(

import pandas as pd
#sample data
df = pd.DataFrame.from_dict({
'value1': [0, 1, 2],
'value2': ['TestA', 'TestB', 'TestC']
})
#format message with values
df['message'] = df.apply(lambda x: f"CPU-Value: {x['value1']:d}, Event-Type: {x['value2']}", axis=1)

最新更新