根据最终 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 是您要查找的内容:
在加入两个 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 是您要查找的内容: