如何转换没有标题的熊猫系列列

时间:2018-08-21 14:29:54

标签: pandas type-conversion

很奇怪,因为到目前为止我还没有遇到过有关数据序列转换的问题。

因此我从NREL检索了按日期和小时在不同高度的风速数据。

file09 = 'wind/wind_yr2009.txt'
wind09 = pd.read_csv(file09, encoding = "utf-8", names = ['DATE (MM/DD/YYYY)', 'HOUR-MST', 'AWS@20m [m/s]', 'AWS@50m [m/s]', 'AWS@80m [m/s]', 'AMPLC(2-80m)'])

file10 = 'wind/wind_yr2010.txt'
wind10 = pd.read_csv(file10, encoding = "utf-8", names = ['DATE (MM/DD/YYYY)', 'HOUR-MST', 'AWS@20m [m/s]', 'AWS@50m [m/s]', 'AWS@80m [m/s]', 'AMPLC(2-80m)'])

我合并下面两个.txt文件的读数

wind = pd.concat([wind09, wind10], join='inner')

然后删除重复的标题。

wind = wind.reset_index().drop_duplicates(keep='first').set_index('index')

print(wind['HOUR-MST'])

打印将返回以下内容-

索引

0小时MST

1 1

2 2

我一开始不确定,但显然索引0在HOUR-MST上,这是列标题。 Python确实可以识别它,因为我可以使用特定的标头来推断列数据。但是,当我尝试转换为int

temp = hcodebook.iloc[wind['HOUR-MST'].astype(int) - 1]

两个错误均返回,后来我尝试转换为float

ValueError: invalid literal for int() with base 10: 'HOUR-MST'
ValueError: could not convert string to float: 'HOUR-MST'

我通过在try/except循环中使用for验证了只有0个索引具有字符串。

我认为原因是因为我在读取这些文件时没有使用参数sep-因为这与之前其他尝试进行数据转换的其他文件的唯一区别。

但是,它不一定能使我了解如何解决它。

请告知。

1 个答案:

答案 0 :(得分:2)

MCVE:

from io import StringIO
import pandas as pd

cfile = StringIO("""A  B  C  D
1  2  3  4
5  6  7  8""")

pd.read_csv(cfile, names=['a','b','c','d'], sep='\s\s+')

数据中包含标题:

   a  b  c  d
0  A  B  C  D
1  1  2  3  4
2  5  6  7  8

使用skiprows避免获得标题:

from io import StringIO
import pandas as pd
​
cfile = StringIO("""A  B  C  D
1  2  3  4
5  6  7  8""")

pd.read_csv(cfile, names=['a','b','c','d'], sep='\s\s+', skiprows=1)

没有标题:

   a  b  c  d
0  1  2  3  4
1  5  6  7  8