我使用Python 3.4.0和pandas == 0.16.2。我的足球队成绩为CSV文件,其中包含以下列:date,at,goals.scored,goals.lost,result。 ' at'列可以具有三个值(H,A,N)中的一个,其指示游戏是否分别在团队的主场,远离或中立位置发生。这是一个这样的文件的负责人:
date,at,goals.scored,goals.lost,result
16/09/2014,A,0,2,2
01/10/2014,H,4,1,1
22/10/2014,A,2,1,1
04/11/2014,H,3,3,0
26/11/2014,H,2,0,1
09/12/2014,A,4,1,1
25/02/2015,H,1,3,2
17/03/2015,A,2,0,1
19/08/2014,A,0,0,0
当我以通常的方式将此文件加载到pandas.DataFrame时:
import pandas as pd
aTeam = pd.DataFrame.from_csv("teamA-results.csv")
前两列' date'并且' at'似乎被视为一个,我得到一个像这样的格式错误的数据框架:
aTeam.dtypes
at object
goals.scored int64
goals.lost int64
result int64
dtype: object
aTeam
at goals.scored goals.lost result
date
2014-09-16 A 0 2 2
2014-01-10 H 4 1 1
2014-10-22 A 2 1 1
2014-04-11 H 3 3 0
2014-11-26 H 2 0 1
...
代码块没有明确反映出损坏,所以我附上了Jupyter笔记本的屏幕截图:
你可以看到' date'并且' at'列似乎被视为对象类型的一列:
aTeam['at']
date
2014-09-16 A
2014-01-10 H
2014-10-22 A
2014-04-11 H
2014-11-26 H
2014-09-12 A
最初我认为日期周围缺少引号导致了这个问题,所以我添加了这些,但它根本没有帮助,所以我引用了' at'中的所有值。列仍然没有解决问题。我在CSV文件中尝试过单引号和双引号。有趣的是,在' date'中使用的值没有引号或双引号。并且' at'产生了与上面相同的结果。单引号被解释为' at'中的值的一部分。列,但不在日期列中:
添加parse_dates=True
参数对数据框没有任何影响。
当我在R中使用这些CSV文件时,我没有遇到过这样的问题。我将非常感谢您提供此任何帮助。
答案 0 :(得分:2)
我可以使用from_csv复制您的问题,问题是它使用col 0作为索引,因此传递index_col=None
会起作用:
index_col : int或序列,默认为0
用于索引的列。如果给出序列,则使用MultiIndex。与read_table不同的默认值
import pandas as pd
aTeam = pd.DataFrame().from_csv("in.csv",index_col=None)
输出:
date at goals.scored goals.lost result
0 16/09/2014 A 0 2 2
1 01/10/2014 H 4 1 1
2 22/10/2014 A 2 1 1
3 04/11/2014 H 3 3 0
4 26/11/2014 H 2 0 1
5 09/12/2014 A 4 1 1
6 25/02/2015 H 1 3 2
7 17/03/2015 A 2 0 1
8 19/08/2014 A 0 0 0
Odr using。read_csv正常工作,根据您尝试quotechar
的事实,您可能想要的是有效的arg:
import pandas as pd
aTeam = pd.read_csv("in.csv")
输出:
date at goals.scored goals.lost result
0 16/09/2014 A 0 2 2
1 01/10/2014 H 4 1 1
2 22/10/2014 A 2 1 1
3 04/11/2014 H 3 3 0
4 26/11/2014 H 2 0 1
5 09/12/2014 A 4 1 1
6 25/02/2015 H 1 3 2
7 17/03/2015 A 2 0 1
8 19/08/2014 A 0 0 0
答案 1 :(得分:0)
我在这里没有问题(使用Python 2.7,Pandas 16.2)。我使用了您粘贴的文本并在我的桌面上创建了一个.csv文件,并使用两种方法将其加载到Pandas中
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:columnCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView3" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="1"></LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView4" />
</GridLayout>
您可以在read_csv和from_csv命令之间查看索引处理方式的不同行为。但是,我没有看到你提到的问题。您可以随时尝试进一步定义read_csv参数,但我怀疑这会产生实质性的差异。
您是否可以通过aTeam ['at']查询数据框来确认您的日期和“at”列是否被粉碎在一起,看看会产生什么结果?