首页 > 解决方案 > 如何使用 Pandas 创建一个 if 语句,获取最后一行 csv 并在特定 col 处提取,如果 col 为空,检查它之前的行?

问题描述

我想知道是否可以创建一个 if 语句来检查特定单元格的最后一行是否包含任何数据或是否为“nan”。如果它包含数据然后继续,如果没有,我希望程序在最后一行之前检查该行。

这是我目前使用的代码,使用 github 上的 csv 数据:

import pandas as pd
import csv
import requests


url1 = r"https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/vaccinations/country_data/Austria.csv"

file1 = pd.read_csv(url1)

df1 = pd.DataFrame(file1.iloc[:,:].values)

df1 = pd.DataFrame(file1.iloc[-1:,:].values)


# This line gets the last row of csv file
Austria_date = df1.iloc[:,1]

# This line gets the cell of the last row, but unforatenly it does not contain data, instead "nan"
Austria_cum = df1.iloc[:, 4].map('{:,}'.format)

是否可以创建一个 if 语句来检查上一行并查看其中是否包含数据?

标签: pythonpandasdataframe

解决方案


如果您只关心从填充的最后一行获取数据,您可以使用:

df.fillna(method='ffill')

它将变成以下df:

日期 疫苗接种
17-2-21 10
18-2-21 20
19-2-21

进入:

日期 疫苗接种
17-2-21 10
18-2-21 20
19-2-21 20

请注意,这会填充所有NaN值,有关更多信息,请参阅:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

编辑:

我改变了我的例子,以反映我的方法与 Rob Raymond 的方法相比的不同结果。如果您希望结果为Date: 18-2-21, Vaccinations: 20,则应使用 Rob Raymond 处理缺失值的方法。如果您希望结果是Date: 19-2-21, Vaccinations: 20您应该使用此答案中描述的方法。


推荐阅读