2 回答

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超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 接受一個函數(shù)來生成一個新的 Series 或 DataFrame
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個贊
像這樣的東西應(yīng)該工作:
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教程中的示例
評論中提出的后續(xù)問題:
它假定我合并的 csv 文件已經(jīng)有主機(jī)別名,但它不會導(dǎo)致錯誤:發(fā)生異常:ValueError Usecols 與列不匹配,列預(yù)期但未找到:['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
無論順序如何,都會刪除參數(shù)中提供的所有字符。只需添加一個't'
:
h_num = combo['Host Name'].str.lstrip('tdpc0').str[:-2]
至于:
它假定我合并的 csv 文件已經(jīng)有主機(jī)別名
我不確定你的意思。當(dāng)你這樣做
combo['Host Alias'] = 'dev_dom' + h_num
如果該列尚不存在,'Host Alias'
則將在 中創(chuàng)建該列。pandas.DataFrame
如果確實(shí)存在,則該列將被操作返回的新數(shù)據(jù)替換。然后,您可以使用pandas.DataFrame.to_csv
將此 DataFrame 保存到 .csv 文件。
添加回答
舉報