3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
你需要找出哪里Description
存在using?pd.Series.eq
,然后使用pd.Index.to_series
,這樣我們才能使用pd.Series.shift
。
cols = df.columns.to_series()
m = cols.eq('Description') #would mark True where value is `Description`
out = cols.shift().str.strip().str.replace('\s+','_') + '_' + cols
out[~m] = cols
out.to_list()
['Sl.No', 'Job', 'Job_Description', 'Vendor', 'Vendor_Description', 'WO No',
?'Accounting Center ', 'Accounting_Center_Description', 'Nature Of Work',
?'WO Type', 'WO Date', 'WO From Date', 'WO To Date', 'Bill No', 'Running Bill No',
?'Bill Date', 'Bill Status', 'Voucher No', 'Voucher Date', 'Bank \nVoucher No',
?'Bank Voucher\n Date', ' Paid Amount', 'Currency', 'WO Amt', 'Bill Amt',
?'Service Tax Amt', 'VAT Amt', 'Total Tax \nAmt', ' Advance Amt', 'Gross Amt',
?'Deduction Amt', 'Net Amt']

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
讓cols成為您原始列表的名稱。那么代碼可能是:
D = "Description"
previous_current = zip([None] + cols[:-1], cols)
df.columns = [curr if curr != D else prev + "_" + D for prev, curr in previous_current]
結(jié)果:
>>> df.columns
Index(['Sl.No', 'Job', 'Job_Description', 'Vendor', 'Vendor_Description',
'WO No', 'Accounting Center ', 'Accounting Center _Description',
'Nature Of Work', 'WO Type', 'WO Date', 'WO From Date', 'WO To Date',
'Bill No', 'Running Bill No', 'Bill Date', 'Bill Status', 'Voucher No',
'Voucher Date', 'Bank \nVoucher No', 'Bank Voucher\n Date',
' Paid Amount', 'Currency', 'WO Amt', 'Bill Amt', 'Service Tax Amt',
'VAT Amt', 'Total Tax \nAmt', ' Advance Amt', 'Gross Amt',
'Deduction Amt', 'Net Amt'],
dtype='object')
說明:
我們構(gòu)建了一些作為對(duì)列表的東西(previous, current):
>>> previous_current = zip([None] + cols[:-1], cols)
>>> list(previous_current)
[(None, 'Sl.No'),
('Sl.No', 'Job'),
('Job', 'Description'),
('Description', 'Vendor'),
('Vendor', 'Description'),
('Description', 'WO No'),
('WO No', 'Accounting Center '),
('Accounting Center ', 'Description'),
('Description', 'Nature Of Work'),
('Nature Of Work', 'WO Type'),
('WO Type', 'WO Date'),
('WO Date', 'WO From Date'),
('WO From Date', 'WO To Date'),
('WO To Date', 'Bill No'),
('Bill No', 'Running Bill No'),
('Running Bill No', 'Bill Date'),
('Bill Date', 'Bill Status'),
('Bill Status', 'Voucher No'),
('Voucher No', 'Voucher Date'),
('Voucher Date', 'Bank \nVoucher No'),
('Bank \nVoucher No', 'Bank Voucher\n Date'),
('Bank Voucher\n Date', ' Paid Amount'),
(' Paid Amount', 'Currency'),
('Currency', 'WO Amt'),
('WO Amt', 'Bill Amt'),
('Bill Amt', 'Service Tax Amt'),
('Service Tax Amt', 'VAT Amt'),
('VAT Amt', 'Total Tax \nAmt'),
('Total Tax \nAmt', ' Advance Amt'),
(' Advance Amt', 'Gross Amt'),
('Gross Amt', 'Deduction Amt'),
('Deduction Amt', 'Net Amt')]
然后我們迭代它,并通過該對(duì)的第二個(gè)元素(當(dāng)前列標(biāo)簽)我們決定
是否保持原樣,或者
將其附加到前一列的標(biāo)簽(該對(duì)的第一個(gè)元素)。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
讓cols成為您原始列表的名稱。那么代碼可能是:
D = "Description"
previous_current = zip([None] + cols[:-1], cols)
df.columns = [curr if curr != D else prev + "_" + D for prev, curr in previous_current]
結(jié)果:
>>> df.columns
Index(['Sl.No', 'Job', 'Job_Description', 'Vendor', 'Vendor_Description',
'WO No', 'Accounting Center ', 'Accounting Center _Description',
'Nature Of Work', 'WO Type', 'WO Date', 'WO From Date', 'WO To Date',
'Bill No', 'Running Bill No', 'Bill Date', 'Bill Status', 'Voucher No',
'Voucher Date', 'Bank \nVoucher No', 'Bank Voucher\n Date',
' Paid Amount', 'Currency', 'WO Amt', 'Bill Amt', 'Service Tax Amt',
'VAT Amt', 'Total Tax \nAmt', ' Advance Amt', 'Gross Amt',
'Deduction Amt', 'Net Amt'],
dtype='object')
說明:
我們構(gòu)建了一些作為對(duì)列表的東西(previous, current):
>>> previous_current = zip([None] + cols[:-1], cols)
>>> list(previous_current)
[(None, 'Sl.No'),
('Sl.No', 'Job'),
('Job', 'Description'),
('Description', 'Vendor'),
('Vendor', 'Description'),
('Description', 'WO No'),
('WO No', 'Accounting Center '),
('Accounting Center ', 'Description'),
('Description', 'Nature Of Work'),
('Nature Of Work', 'WO Type'),
('WO Type', 'WO Date'),
('WO Date', 'WO From Date'),
('WO From Date', 'WO To Date'),
('WO To Date', 'Bill No'),
('Bill No', 'Running Bill No'),
('Running Bill No', 'Bill Date'),
('Bill Date', 'Bill Status'),
('Bill Status', 'Voucher No'),
('Voucher No', 'Voucher Date'),
('Voucher Date', 'Bank \nVoucher No'),
('Bank \nVoucher No', 'Bank Voucher\n Date'),
('Bank Voucher\n Date', ' Paid Amount'),
(' Paid Amount', 'Currency'),
('Currency', 'WO Amt'),
('WO Amt', 'Bill Amt'),
('Bill Amt', 'Service Tax Amt'),
('Service Tax Amt', 'VAT Amt'),
('VAT Amt', 'Total Tax \nAmt'),
('Total Tax \nAmt', ' Advance Amt'),
(' Advance Amt', 'Gross Amt'),
('Gross Amt', 'Deduction Amt'),
('Deduction Amt', 'Net Amt')]
添加回答
舉報(bào)