在我的csv文件中,我有时间列和三个数据列。我需要使用熊猫将时间转换为浮动。但这给了我一个错误,int()以10为底的无效字面量:'g' 您能建议我解决此错误吗? 我的代码是,
def time_to_float(t):
""" convert "hh:mm:ss" to float (0, 1) only of the correct format """
if t == '-':
return None
a = [int(i) for i in t.split(":")]
if len(a) == 3:
return round((a[0] + a[1] / 60 + a[2] / 3600) / 24, 5)
else:
return t
def pick_column(data_, n, start=1):
""" pick all the n'th column data starting from "start" """
return [time_to_float(data_[i][n]) for i in range(start, len(data_))]
data = pd.read_csv('data4.csv')
data = [i for i in data]
Time = pick_column(data, 0)
g = pick_column(data, 1)
p = pick_column(data, 2)
c = pick_column(data, 3)
y = pick_column(data, 4)
print(Time)
print(g)
print(p)
print(c)
print(y)
我的数据集是
Time g p c y
0:06:15 141 NaN NaN 141
0:08:00 NaN 10 NaN 117
0:09:00 NaN 15 NaN 103
0:09:25 95 NaN NaN 95
0:09:30 NaN NaN 50 93
答案 0 :(得分:2)
我认为您需要这个
这是您的采样时间
print(df['Time'])
1:06:15
要将其转换为每天几秒钟,您可以这样做
df['TimeFloat'] = (pd.DatetimeIndex(df['Time']).astype(np.int64)/10**9)%86400
使用模量为86400,因为一天中有86400秒
您可以根据转换(秒,分钟,毫秒)修改模量值
另外,如果您需要在int
中进行转换,则只需使用//
而不是/
最终df是这个
Time TimeFloat
1:06:15 3975.0
答案 1 :(得分:0)
通常您会做类似的事情
t = df[df.columns[0]].astype('int64') / 1e9
print(t)
转换整个第一列。如果表中只有字符串,则需要先转换为日期,例如
timecol = df.columns[0]
df[timecol] = pd.to_datetime(df[timecol])
然后运行第一个代码段。