所以我需要读取一个包含日期和数值的csv文件,其格式如下: Try This code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#131314"
android:elevation="4dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_camera"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"
/>
<Button
android:id="@+id/btn_ruler"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"/>
<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"/>
<Button
android:id="@+id/btn_price"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"
/>
<Button
android:id="@+id/btn_5"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"
/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
Or
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#131314"
android:elevation="4dp"
>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relativeLayout"
>
<Button
android:id="@+id/btn_camera"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="50dp"
android:background="@drawable/ic_default_event_pic"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/btn_ruler"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/btn_camera"/>
<Button
android:id="@+id/btn_3"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/btn_ruler" />
<Button
android:id="@+id/btn_price"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/ic_default_event_pic"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/btn_3" />
<Button
android:id="@+id/btn_5"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="50dp"
android:background="@drawable/ic_default_event_pic"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/btn_price" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.Toolbar>
。
这是我的代码:
2017-01-01 00:00:00,-350.7866656
我得到的是一个错误:def parser(x):
return datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
df = read_csv('filename', header=None, parse_dates=[0], index_col=0,
squeeze=True, date_parser=parser)
print(df.head())
据我所知,程序将字符串视为单列而不是两列,并尝试解析整个字符串而不是第一列与日期。我如何解决这个问题,以便将csv文件读入两列?
答案 0 :(得分:3)
在我看来,问题是您可能有一些错误的日期值,无法通过单个datetime
格式进行解析。而是向try-except
函数添加parser
语句:
import pandas as pd
import numpy as np
from datetime import datetime, time
temp=u"""2015-01-04 12:04:10,10
2018-01-10 18:40:12,20
-350.7866656,20"""
def parser(x):
try:
return datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
except ValueError:
return np.nan
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), header=None, parse_dates=[0], index_col=0,
squeeze=True, date_parser=parser)
print (df)
0
2015-01-04 12:04:10 10
2018-01-10 18:40:12 20
NaT 20
Name: 1, dtype: int64
print (df.index)
DatetimeIndex(['2015-01-04 12:04:10', '2018-01-10 18:40:12', 'NaT'], dtype='datetime64[ns]', name=0, freq=None)
答案 1 :(得分:0)
我查了pandas.read_csv文档。您设置为index_col
的参数0
正在将文件中的日期列设置为索引。在我看来,删除参数将产生所需的结果,即。在两列中阅读CSV。
干杯!