当我使用pandas读取.csv中的特定列时,奇怪的跳过

时间:2016-05-26 04:51:22

标签: python excel python-2.7 csv pandas

1。背景

我上传的{。{3}} .csv文件是我解释问题的示例文件。

此文件包含特定日期中国所有城市(代码中代表)的所有空气质量信息。

例如, 1001A 列代表一个城市,此列中的值代表与type列对应的空气污染物浓度。

here

1。我的问题

如果我想在20160205-00:00获得AQI城市的1014A值, 我只需要使用

 df = pd.read_csv("./this file")
 aqi = df["1014A"].iloc[0]

结果是 42 。但是在 LibraOffice 中查看相同的文件,结果显示如下:

enter image description here

似乎熊猫读了1013A并犯了错误。

所以,我想弄清楚专栏1013A中发生了什么:

enter image description here

pandas读取此列(内部有限值)作为NaN值列。它在这个文件中发生了很多次。在接下来的方面让我感到困扰:

  • 有些数据的列被视为pandas.Dataframe中的NaN列

  • 其他列也会间接受到Error-NaN列的影响。

如果此问题尚未解决,则列位置将充满错误。

任何建议都会受到赞赏!

1 个答案:

答案 0 :(得分:2)

你的csv在这个位置有两个逗号:

...19,20,24,19,22,24,29,,42,39...

这被大熊猫读作NaN。

看起来在您的LibreOffice版本中,它被跳过并使用后续值(错误地)。

In [11]: s = open("china_sites_20160205.csv").readlines()

In [12]: s[0].split(",")[13:18]
Out[12]: ['1011A', '1012A', '1013A', '1014A', '1015A']

In [13]: s[1].split(",")[13:18]
Out[13]: ['24', '29', '', '42', '39']