2 回答
TA贡献1712条经验 获得超3个赞
def func(row):
if row['Host Name'] == "dpc01n1":
return 'dev_dom1'
#do your Host Alias generate logic here,and return
combo["Host Alias"]=combo.apply(func, axis=1)
DataFrame.apply 接受一个函数来生成一个新的 Series 或 DataFrame
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html
TA贡献1909条经验 获得超7个赞
像这样的东西应该工作:
import pandas as pd
combo = pd.DataFrame({
'Start Time' : [1,2,3],
'epoch' : [1,2,3],
'Host Name': ['dpc01n1','dpc02n1','dpc00103n1'],
'Db Alias' : [1,2,3],
'Database' : [1,2,3],
'Db Host' : [1,2,3],
'Db Host IP' : [1,2,3],
'IP Port' : [1,2,3],
'Latency (us)' : [1,2,3],
})
h_num = combo['Host Name'].str.lstrip('dpc0').str[:-2]
combo['Host Alias'] = 'dev_dom' + h_num
print(combo)
它假定所有'Host Name'
s 不以任何其他开头,'dpc'
并且不需要两个尾随字符 like 'n1'
。python教程中的示例
评论中提出的后续问题:
它假定我合并的 csv 文件已经有主机别名,但它不会导致错误:发生异常:ValueError Usecols 与列不匹配,列预期但未找到:['Host Alias'] File "D:\OneDrive \python\merger.py", line 42, in content = [pd.read_csv(f,usecols = combo_headers, sep='[;]',engine='python') 除了 dpc,我还有 tpc。我该如何添加呢?– 树干
str.lstrip
无论顺序如何,都会删除参数中提供的所有字符。只需添加一个't'
:
h_num = combo['Host Name'].str.lstrip('tdpc0').str[:-2]
至于:
它假定我合并的 csv 文件已经有主机别名
我不确定你的意思。当你这样做
combo['Host Alias'] = 'dev_dom' + h_num
如果该列尚不存在,'Host Alias'
则将在 中创建该列。pandas.DataFrame
如果确实存在,则该列将被操作返回的新数据替换。然后,您可以使用pandas.DataFrame.to_csv
将此 DataFrame 保存到 .csv 文件。
添加回答
举报