根据最终 excel 文件中特定列中的 empty/blanks 值删除一行 - Pandas 数据框

Drop a row based on empty/blanks values in specific column in final excel file - Pandas Data frame

在加入两个 excel 的数据后,我试图根据 excel 的特定列中的空值删除行。我尝试了堆栈溢出中提到的一些查询,但没有达到预期的结果。多谢支持

第一个 Excel 文件名为:Fileq.xls 内容如下

项目 申请数量 参考数量
项目 A 0
项目 B 20 18
项目 C 0
项目 D 1
项目 E 2

第一个 Excel 文件名为:Data.xls 内容如下

项目 申请数量 参考数量
项目 G 0
项目 H 12 13
项目一 0
项目 J 1 25
项目 K 2

期望的结果:-

项目 申请数量 参考数量
项目 B 20 18
项目 H 12 13
项目 J 1 25

我正在尝试的代码:-

import pandas as pd
DATA_DIR = Path.cwd() / r'C:\Python'

excel001 = DATA_DIR / 'Fileq.xls'

excel002 = DATA_DIR / 'Data.xls'

df001 = pd.read_excel(excel001)

df002 = pd.read_excel(excel002)

values001 = df001

values002 = df002

dataframes = [values001, values002]

join = pd.concat(dataframes)

#Tried many different combinations but non are working as below

new_df= join['Reference Qty'].replace(r'^\s*$', np.nan, inplace=True) 

print(new_df)

非常接近!只是缺少 dropna 我们可以将 dict 传递给 replace 以便 replace'Reference Qty' 列上替换整个 DataFrame:

new_df = (
    pd.concat([df1, df2])
        .replace({'Reference Qty': r'^\s*$'}, np.nan, regex=True)
        .dropna(subset=['Reference Qty'])
)

new_df:

     Item  Applied Qty Reference Qty
1  Item B           20          18.0
1  Item H           12          13.0
3  Item J            1          25.0

完整的工作示例:

import numpy as np
import pandas as pd

df1 = pd.DataFrame({
    'Item': ['Item A', 'Item B', 'Item C', 'Item D', 'Item E'],
    'Applied Qty': [0, 20, 0, 1, 2],
    'Reference Qty': ['', 18.0, '', '', '']
})

df2 = pd.DataFrame({
    'Item': ['Item G', 'Item H', 'Item I', 'Item J', 'Item K'],
    'Applied Qty': [0, 12, 0, 1, 2],
    'Reference Qty': ['', 13.0, '', 25.0, '']
})

new_df = (
    pd.concat([df1, df2])
        .replace({'Reference Qty': r'^\s*$'}, np.nan, regex=True)
        .dropna(subset=['Reference Qty'])
)

print(new_df)

这应该有效:

df.replace("", np.nan, inplace=True)

df.dropna(subset = ["Reference Qty"], inplace=True)

我认为 pandas 中的 dropna function 是您要查找的内容: