Python使用Excel-fi自动复制单元格直到下一个空白

2024-06-03 05:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力解决从ibmbluemix中提取的Excel电子表格中的许多数据格式问题。你知道吗

使用Python,到目前为止,我已经知道了如何使用SoftLayer API连接到我们的实例,并以.xls格式下载最新的invoice。然后使用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

但是,虽然我可以看到我想用打印功能更改的数据,但我无法确定如何选择该范围内最上面的单元格并将其复制下来。。。你知道吗

我很欣赏这可能是超级简单,但我来在这个作为一个完全的新手,我已经设法得到了一个合理的方式与这一切,所以我不想失败在这里!任何帮助都将不胜感激。你知道吗


Tags: dataportnetworkdrivepublicxlstbipv6
1条回答
网友
1楼 · 发布于 2024-06-03 05:30:44

我的示例不知道Excel文档导入pandas后的空行是什么,因此假设它们是NaN,但是您可以更改下面第一行第二部分中的任何内容,您应该可以得到所需的输出。你知道吗

<更新-基于OP CONNT,这已被更新来处理空白行作为楠,并使用^ {CD1>}作为列标题的占位符。

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)

相关问题 更多 >