Python Pandas 下降
Python Pandas drop
我使用 Python 构建脚本并使用 Pandas。
我正在尝试从数据框中删除行。
我想将包含空值的行删除到两个特定的列中。
如果这两列中的一列定期完成但另一列没有完成,则保留该行。
所以我构建了这段有效的代码。但我是初学者,我相信我可以简化我的工作。
我确定我的函数中不需要循环“for”。我认为有一个很好的方法。我在互联网上阅读了文档,但一无所获。
我尽力而为,但我需要帮助。
另外出于某些原因我不想使用 numpy。
所以这是我的代码:
import pandas as pnd
def drop_empty_line(df):
a = df[(df["B"].isna()) & (df["C"].isna())].index
for i in a:
df = df.drop([i])
return df
def main():
df = pnd.DataFrame({
"A": [5, 0, 4, 6, 5],
"B": [pnd.NA, 4, pnd.NA, pnd.NA, 5],
"C": [pnd.NA, pnd.NA, 9, pnd.NA, 8],
"D": [5, 3, 8, 5, 2],
"E": [pnd.NA, 4, 2, 0, 3]
})
print(drop_empty_line(df))
if __name__ == '__main__':
main()
你确实不需要循环。你甚至不需要自定义函数,已经有 dropna
:
df = df.dropna(subset=['B', 'C'], how='all')
# or in place:
# df.dropna(subset=['B', 'C'], how='all', inplace=True)
输出:
A B C D E
1 0 4 <NA> 3 4
2 4 <NA> 9 8 2
4 5 5 8 2 3
我使用 Python 构建脚本并使用 Pandas。 我正在尝试从数据框中删除行。 我想将包含空值的行删除到两个特定的列中。 如果这两列中的一列定期完成但另一列没有完成,则保留该行。 所以我构建了这段有效的代码。但我是初学者,我相信我可以简化我的工作。 我确定我的函数中不需要循环“for”。我认为有一个很好的方法。我在互联网上阅读了文档,但一无所获。 我尽力而为,但我需要帮助。 另外出于某些原因我不想使用 numpy。
所以这是我的代码:
import pandas as pnd
def drop_empty_line(df):
a = df[(df["B"].isna()) & (df["C"].isna())].index
for i in a:
df = df.drop([i])
return df
def main():
df = pnd.DataFrame({
"A": [5, 0, 4, 6, 5],
"B": [pnd.NA, 4, pnd.NA, pnd.NA, 5],
"C": [pnd.NA, pnd.NA, 9, pnd.NA, 8],
"D": [5, 3, 8, 5, 2],
"E": [pnd.NA, 4, 2, 0, 3]
})
print(drop_empty_line(df))
if __name__ == '__main__':
main()
你确实不需要循环。你甚至不需要自定义函数,已经有 dropna
:
df = df.dropna(subset=['B', 'C'], how='all')
# or in place:
# df.dropna(subset=['B', 'C'], how='all', inplace=True)
输出:
A B C D E
1 0 4 <NA> 3 4
2 4 <NA> 9 8 2
4 5 5 8 2 3