在 csv 导入 pandas 期间跳过行
- 2025-01-09 08:46:00
- admin 原创
- 13
问题描述:
我正在尝试使用 导入 .csv 文件pandas.read_csv()
,但是我不想导入数据文件的第二行(对于 0 索引,索引 = 1 的行)。
我不明白如何不导入它,因为命令使用的参数似乎不明确:
来自熊猫网站:
skiprows
:列表或整数在文件开头要跳过的行号(从 0 开始)或要跳过的行数(int)。”
如果我输入skiprows=1
参数,它如何知道是否跳过第一行或跳过索引为 1 的行?
解决方案 1:
你可以自己尝试一下:
>>> import pandas as pd
>>> from io import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
0 1
0 1 2
1 5 6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
0 1
0 3 4
1 5 6
解决方案 2:
我还没有声誉来评论,但我想添加到alko答案中以供进一步参考。
来自文档:
skiprows:文件中要跳过的行数的集合。也可以是整数,表示跳过前 n 行
解决方案 3:
我在读取 csv 文件时运行 skiprows 时遇到了同样的问题。我执行了 skip_rows=1,但不起作用
简单的例子给出了如何在读取 csv 文件时使用 skiprows 的想法。
import pandas as pd
#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1) ## pandas as pd
#print the data frame
df
解决方案 4:
所有这些答案都忽略了一个重要点——第 n 行是文件中的第 n 行,而不是数据集中的第 n 行。我遇到过这种情况,我从 USGS 下载了一些过时的流量计数据。数据集的开头用“#”注释,之后的第一行是标签,接下来是一行描述日期类型,最后是数据本身。我不知道有多少注释行,但我知道前几行是什么。示例:
> # ----------------------------- WARNING ----------------------------------
> # Some of the data that you have obtained from this U.S. Geological Survey database
> # may not have received Director's approval. ... agency_cd site_no datetime tz_cd 139719_00065 139719_00065_cd
> 5s 15s 20d 6s 14n 10s USGS 08041780 2018-05-06 00:00 CDT 1.98 A
如果有一种方法可以自动跳过第 n 行以及第 n 行,那就太好了。
需要注意的是,我可以通过以下方式解决我的问题:
import pandas as pd
ds = pd.read_csv(fname, comment='#', sep=' ', header=0, parse_dates=True)
ds.drop(0, inplace=True)
解决方案 5:
索引指的read_csv
是 csv 文件中的行号(第一行的索引为 0)。您可以使用以下选项跳过行:
from io import StringIO
csv = \n"""col1,col2
1,a
2,b
3,c
4,d
"""
pd.read_csv(StringIO(csv))
# Output:
col1 col2 # index 0
0 1 a # index 1
1 2 b # index 2
2 3 c # index 3
3 4 d # index 4
跳过文件开头的两行(索引 0 和 1)。列名也被跳过(索引 0),顶行用于列名。要添加列名,请使用names = ['col1', 'col2']
参数:
pd.read_csv(StringIO(csv), skiprows=2)
# Output:
2 b
0 3 c
1 4 d
跳过第二行和第四行(索引 1 和 3):
pd.read_csv(StringIO(csv), skiprows=[1, 3])
# Output:
col1 col2
0 2 b
1 4 d
跳过最后两行:
pd.read_csv(StringIO(csv), engine='python', skipfooter=2)
# Output:
col1 col2
0 1 a
1 2 b
使用 lambda 函数跳过每隔一行(索引 1 和 3):
pd.read_csv(StringIO(csv), skiprows=lambda x: (x % 2) != 0)
# Output:
col1 col2
0 2 b
1 4 d
解决方案 6:
skip[1]
将跳过第二行,而不是第一行。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件