python - 如何使用 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 语句来检查上一行并查看其中是否包含数据?
解决方案
如果您只关心从填充的最后一行获取数据,您可以使用:
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
您应该使用此答案中描述的方法。
推荐阅读
- command - (WinDbg) 在使用 WinDbg(内核模式)切换到进程上下文后,如何切换回内核上下文?
- swiftui - 我无法在 SwiftUI 中将 NavigationItemTitle 覆盖到 TabView
- javascript - 在循环内设置本地存储项
- python - 如何使表单重定向到 Django 中用户给出的 URL?
- php - 在设置 API 中使用 nonce - WordPress 插件开发
- python - 如何手动缩放 Seaborn Violinplot 的计数
- python - 如何在 Python 中四舍五入到下一个以 2 结尾的整数?
- python - 如何从一个文件到另一个文件获取 Tkinter 输入?
- c# - 从 Windows 服务调用渲染图像时 UserControl 泄漏
- python - 从字符类中减去