【发布时间】:2012-05-26 19:27:22
【问题描述】:
我从 CSV 文件加载了一些机器学习数据。前 2 列是观测值,其余列是特征。
目前,我执行以下操作:
data = pandas.read_csv('mydata.csv')
这给出了类似的东西:
data = pandas.DataFrame(np.random.rand(10,5), columns = list('abcde'))
我想将此数据帧分割成两个数据帧:一个包含a 和b 列,另一个包含c、d 和e 列。
不可能写出类似的东西
observations = data[:'c']
features = data['c':]
我不确定最好的方法是什么。我需要pd.Panel吗?
顺便说一句,我发现数据帧索引非常不一致:data['a'] 是允许的,但 data[0] 是不允许的。另一方面,data['a':] 是不允许的,但 data[0:] 是允许的。
这有实际原因吗?如果列是由 Int 索引的,这真的很令人困惑,因为 data[0] != data[0:1]
【问题讨论】:
-
当您执行 df[...] 时,DataFrame 本质上是一个类似 dict 的对象,但是有一些便利,例如
df[5:10]被添加用于选择行 (pandas.pydata.org/pandas-docs/stable/…) -
那么这种不一致性是为了方便而做出的设计决定?好的,但对于初学者来说肯定需要更明确!
-
支持便利性的设计考虑使得学习曲线陡峭。我希望一开始就有更好的文档,只是提供一个一致的界面。例如,只关注ix界面。
标签: python pandas numpy dataframe slice