在逐行追加到python数据框时如何跳过/忽略行的空白字段?

问题描述 投票:1回答:1

正在读取输入文件

import time
import os
import pandas as pd
from datetime import datetime, timedelta
from pandas import ExcelWriter

ipfilepath = r"C:\Users\nmanthree\Desktop\m16\m16 nov\Satellite C2 PROD UK.txt"

data = pd.DataFrame(
    columns=['ID', 'Date/Time (UTC)', 'User', 'Description', 'Previous Value', 'New Value', 'Target User'])

The data inside the ip file is something like

ID    User     New Value    Previous Value    Target User 
1     Anil         10                        
2     Shyam        20             30            Jhon
3     Naren        30             40            Rose

我们可以看到,“先前值”和“目标用户”列中有空字段。正在逐行读取ip文件,因为文件大小如果很大且为txt格式,并将每一行附加到数据框。

with open(ipfilepath, "r", encoding="utf-8") as fp:
    for line in read_in_chunks(fp):
        if count == 0:
            count += 1
            continue
            data = data.append({'ID': fields[0],
                                'User': fields[1],
                                'Description': fields[2],
                                'New Value': fields[3],
                                'Previous Value': fields[4],
                                'Target User': fields[5]}
                               , ignore_index=True)
            count += 1

在追加时,由于在“上一个值”和“目标用户”列中有空字段,因此追加时将其视为字段[4]和字段[5],因此得到的错误为]]

'Previous Value': fields[3]
IndexError: list index out of range

因此,在将行数据追加到数据框时,如何跳过/忽略空字段。请帮助我。

<< >

您应该使用熊猫read_csv读取文件。这将读取所有行,并在有空字段的地方插入np.nan。无需自己遍历数据。

ipfilepath = r"C:\Users\nmanthree\Desktop\m16\m16 nov\Satellite C2 PROD UK.txt" ip_df = pd.read_csv(ipfilepath)

print(ip_df.to_string())
ID    User     New Value    Previous Value    Target User 
1     Anil         10             NaN           NaN
2     Shyam        20             30            Jhon
3     Naren        30             40            Rose
python pandas
1个回答
0
投票
您应该使用熊猫read_csv读取文件。这将读取所有行,并在有空字段的地方插入np.nan。无需自己遍历数据。
© www.soinside.com 2019 - 2024. All rights reserved.