簡體   English   中英

Python pandas使用Excel文件自動復制單元格直到下一個空白

[英]Python pandas automate copying cell til next blank, using Excel file

我正在努力解決我從IBM Bluemix中提取的Excel電子表格中的大量數據格式化挑戰。

使用Python,到目前為止,我已經研究了如何使用SoftLayer API連接到我們的實例並下載.xls格式的最新發票。 然后使用pandas和xlsxwriter我開始格式化一個新的電子表格。 到現在為止還挺好。

最新的headscratcher是我有一個新的列,我需要將第一個單元格一直向下復制,直到它到達一個空白單元格(因為這將是下一個項目開始的地方)。

首先,該列如下所示:

SERVERNAME1
Public Network Port: 0 Mbps Public Uplink*
First Hard Drive: 1.00 TB SATA 
Uplink Port Speeds: 1 Gbps Private Network Uplink
Primary IPv6 Addresses: 1 IPv6 Address
Operating System: Vyatta 6.x Subscription Edition (64 bit)
Primary IP Addresses: 1 IP Address
Disk Controller: SATA Disk Controller
RAM: 8 GB DDR3 1333
Second Hard Drive: 1.00 TB SATA 
Public Bandwidth: 0 GB Bandwidth
Sub-Total:

SERVERNAME2
Server: Single Intel Xeon E3-1270 v3 (4 Cores, 3.50 GHz)
Operating System: Vyatta 6.x Subscription Edition (64 bit)
RAM: 8 GB DDR3 1333
Second Hard Drive: 1.00 TB SATA 
Uplink Port Speeds: 1 Gbps Public & Private Network Uplinks
Public Bandwidth: 20000 GB Bandwidth
Disk Controller: RAID
First Hard Drive: 1.00 TB SATA 
Public Network Port: 1 Gbps Public Uplink*
Primary IP Addresses: 1 IP Address
Primary IPv6 Addresses: 1 IPv6 Address
Sub-Total:

SERVERNAME3
Server: Single Intel Xeon E3-1270 v3 (4 Cores, 3.50 GHz)
RAM: 8 GB DDR3 1333
First Hard Drive: 1.00 TB SATA 
Public Bandwidth: 20000 GB Bandwidth
etc.

它需要最終看起來像這樣:

SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1
SERVERNAME1

SERVERNAME2
SERVERNAME2
SERVERNAME2
etc.

我已經到了

data_xls = pd.read_excel('Excel_Latest_Invoice.xls', 'Detailed Billing', header = [1], index_col = None, parse_cols = "A,B:D,F:L")

data_xls.insert(0, 'Server', '')

        <.... Lots of code excluded for brevity .....>

data_of_interest = (f for f in data_xls['Server'])
for f in data_of_interest:
      print(f)               #Just to validate the correct data range

但是雖然我可以看到我想用我的打印功能更改的數據,但我無法弄清楚如何選擇該范圍內的最頂層單元格並將其復制下來......

我很欣賞這可能是非常簡單的,但我作為一個完整的新手來到這里,我已經設法用這一切得到了合理的方式,所以我不想在這里失敗! 任何幫助將非常感謝。

我的例子假設它們是NaN,但我不知道你的Excel文檔被導入到pandas中的空行是什么,但你可以在下面第一行的第二部分更改它們實際上的任何內容,你應該得到輸出你是尋找。

更新 - 基於OP commnt,已更新以將空行處理為NaN並使用0作為列標題的占位符。

data_xls[0].replace(np.nan, '', inplace = True)
data_xls.loc[(data_xls[0].str[:10] != 'SERVERNAME') & (data_xls[0] != '')] = None
data_xls.fillna(method = 'ffill', inplace = True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM