Panda处理CSV文件,如果A列值为空,则用B列值填充,如果B列值仍为空,用C列值填充A

212 阅读1分钟

需求:

CSV文件中  A 列的值不全,如果为空值,则使用B 列的值,如果B列的值仍为空,则使用 C 列的值。

做法:

为简化需求,将所有值统一到 A 列,即填充 A 列空值,如果该行 B 列有值,则用 B 列值填充,否则用 C 列值填充。

代码实现:


import pandas as pd

def check_nan(x):
    if pd.isnull(x['A']):
        if pd.isnull(x['B']):
            return x['C']
        else:
            return x['B']
    return x['A']

# path 为输入文件,out为数据处理后的输出文件
def get_new_file(path,out):
    df = pd.read_csv(path)
 
    df['A'] = df.apply(lambda x : check_nan(x), axis=1)
    df.to_csv(out, index = False)

代码理解:

1. 函数 check_nan(x) 实现填充功能,即检查 A 列空值,用 B 列或 C 列填充。

2. 函数 get_new_file() 使用pands,处理 CSV 文件,注意 appy() 函数中 lambda 的使用。其中 axis = 1是按列处理,若想按行处理,则用 axis = 0。