我从CSV文件加载了一些机器学习数据。前两列是观察值,其余两列是要素。
目前,我执行以下操作:
data = pandas.read_csv('mydata.csv')
它给出了类似的东西:
data = pandas.DataFrame(np.random.rand(10,5), columns = list('abcde'))
我想两个dataframes切片此数据框:包含列一个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]
请参阅文档中的弃用
.loc
使用基于标签的索引来选择行和列。标签是索引或列的值。切片.loc
包含最后一个元素。
假设我们有以下的列的数据框中:
foo
,bar
,quz
,ant
,cat
,sat
,dat
。
# selects all rows and all columns beginning at 'foo' up to and including 'sat'
df.loc[:, 'foo':'sat']
# foo bar quz ant cat sat
.loc
接受与Python列表对行和列所做的相同的切片表示法。切片符号为start:stop:step
# slice from 'foo' to 'cat' by every 2nd column
df.loc[:, 'foo':'cat':2]
# foo quz cat
# slice from the beginning to 'bar'
df.loc[:, :'bar']
# foo bar
# slice from 'quz' to the end by 3
df.loc[:, 'quz'::3]
# quz sat
# attempt from 'sat' to 'bar'
df.loc[:, 'sat':'bar']
# no columns returned
# slice from 'sat' to 'bar'
df.loc[:, 'sat':'bar':-1]
sat cat ant quz bar
# slice notation is syntatic sugar for the slice function
# slice from 'quz' to the end by 2 with slice function
df.loc[:, slice('quz',None, 2)]
# quz cat dat
# select specific columns with a list
# select columns foo, bar and dat
df.loc[:, ['foo','bar','dat']]
# foo bar dat
您可以按行和列进行切片。举例来说,如果你有5列的标签v
,w
,x
,y
,z
# slice from 'w' to 'y' and 'foo' to 'ant' by 3
df.loc['w':'y', 'foo':'ant':3]
# foo ant
# w
# x
# y
问题内容: 这应该很容易,但是以某种方式我找不到有效的解决方案。 我有一个熊猫数据框,看起来像这样: 我想按col1和col2分组并获得col3和col4。 由于无法汇总数据,因此可以删除。 这是输出的样子。我很感兴趣,同时具有和中产生的数据帧。是否和是否属于索引并不重要。 这是我尝试过的: 但是,这只会返回的汇总结果。 我在这里迷路了。我发现的每个示例仅汇总一列,显然不会发生此问题。 问题答案:
问题内容: 我有以下熊猫数据框: 产生此结果: 我如何传播,以便最终得到这个: 问题答案: 使用或: 但是,如果重复,需要或集合体,或可以改变,…: ValueError:索引包含重复的条目,无法重塑 编辑: 对于设置为和的清洁:
问题内容: 之间有什么区别: 和 如何通过column-indexnumber获取数据?而不是通过索引字符串? 问题答案: 一个是列(又名系列),而另一个是DataFrame: 列“ b”(又名系列): [1]中具有列(位置)的子数据框: 注意:最好(而不是模棱两可)指定您是在谈论列名,例如[‘b’]还是整数位置,因为有时您可以将列命名为整数:
问题内容: 我有两个pandas数据框,它们有一些共同点。 假设是的子集。 如何获取dataframe1中不在dataframe2中的行? 问题答案: 一种方法是存储两个df的内部合并结果,然后我们可以简单地在一行的值不在此通用值中时选择行: 编辑 你发现的另一种方法是使用isin它将产生NaN可删除的行: 但是,如果df2不能以相同的方式开始行,那么它将行不通: 将产生整个df:
问题内容: 我有以下数据框: 我尝试过数据透视表 但出现以下错误: 数据透视表的任何替代选择吗? 问题答案: 您可以用来转置数据框。这将数据框切换为圆形,以便行变为列。 您也可以使用。
问题内容: 我正在生成许多具有相同形状的数据框,并且我想将它们相互比较。我希望能够获得整个数据框的均值和中位数。 然后,我想获得这两个数据帧的均值。 最简单的方法是什么? 为了澄清一下,当所有数据框的索引和列完全相同时,我想获取每个特定单元的平均值。 因此,在我给出的示例中,平均值为(0.001182 + 0.000001)/ 2 = 0.0005915。 问题答案: 假设两个数据框具有相同的列,