Python doc说切片列表会返回一个新列表.现在,如果返回"新"列表,我有以下与"分配给切片"有关的疑问
a = [1, 2, 3]
a[0:2] = [4, 5]
print a
Run Code Online (Sandbox Code Playgroud)
现在输出将是:
[4, 5, 3]
Run Code Online (Sandbox Code Playgroud)
在Pandas中,当我选择一个只在索引中有一个条目的标签时,我会返回一个系列,但是当我选择一个包含多个条目的条目时,我会返回一个数据框.
这是为什么?有没有办法确保我总能找回数据框?
In [1]: import pandas as pd
In [2]: df = pd.DataFrame(data=range(5), index=[1, 2, 3, 3, 3])
In [3]: type(df.loc[3])
Out[3]: pandas.core.frame.DataFrame
In [4]: type(df.loc[1])
Out[4]: pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud) 该(x, y)API已经日益普及,多年来,然而,没有关于它的一切是完全理解在结构方面,工作和相关的操作.
一个重要的操作是过滤.过滤是一种常见的要求,但用例是多种多样的.因此,某些方法和功能将比其他用例更适用于某些用例.
总之,本文的目的是触及一些常见的过滤问题和用例,演示解决这些问题的各种不同方法,并讨论它们的适用性.本文试图解决的一些高级问题是
这些问题已分解为6个具体问题,如下所列.为简单起见,以下设置中的示例DataFrame仅具有两个级别,并且没有重复的索引键.提出问题的大多数解决方案可以推广到N级.
本文不会介绍如何创建MultiIndexes,如何对它们执行赋值操作,或任何与性能相关的讨论(这些是另一个时间的单独主题).
问题1-6将在上下文中询问下面的设置.
Run Code Online (Sandbox Code Playgroud)mux = pd.MultiIndex.from_arrays([ list('aaaabbbbbccddddd'), list('tuvwtuvwtuvwtuvw') ], names=['one', 'two']) df = pd.DataFrame({'col': np.arange(len(mux))}, mux) col one two a t 0 u 1 v 2 w 3 b t 4 u 5 v 6 w 7 t 8 c u 9 v 10 d w 11 t 12 u 13 v 14 w 15
问题1:选择单个项目
如何在"1"级中选择"a"的行?
col
one two
a t 0 …Run Code Online (Sandbox Code Playgroud) 鉴于你有一个接受的功能的场景t interface{}.如果确定t是切片,我range该如何切片?我不会知道传入的类型,例如[]string,[]int或者[]MyType,在编译时.
func main() {
data := []string{"one","two","three"}
test(data)
moredata := []int{1,2,3}
test(data)
}
func test(t interface{}) {
switch reflect.TypeOf(t).Kind() {
case reflect.Slice:
// how do I iterate here?
for _,value := range t {
fmt.Println(value)
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我只是遇到了一些奇怪的Python特性,并想要对它进行一些澄清.
以下数组操作有点有意义:
p = [1,2,3]
p[3:] = [4]
p = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我想它实际上只是将这个值附加到最后,对吗?
但是,我为什么要这样做呢?
p[20:22] = [5,6]
p = [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
更是如此:
p[20:100] = [7,8]
p = [1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
这似乎是错误的逻辑.这似乎应该抛出错误!
任何解释?
- 这只是Python的奇怪之处吗?
- 有目的吗?
- 我是否以错误的方式思考这个问题?
当我发现这个时,我正在研究jQuery源代码(v1.5第2295行):
namespace = new RegExp("(^|\\.)" +
jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么要slice(0)在这里使用?
我有以下问题.
给定一个整数列表
L,我需要生成所有子列表L[k:]for k in [0, len(L) - 1],而不生成副本.
我如何在Python中实现这一目标?以某种方式使用缓冲对象?
我正在通过A Tour of Go学习Go.其中一个练习要求我创建一个包含dy行和dx列的2D切片uint8.我目前采用的方法是:
a:= make([][]uint8, dy) // initialize a slice of dy slices
for i:=0;i<dy;i++ {
a[i] = make([]uint8, dx) // initialize a slice of dx unit8 in each of dy slices
}
Run Code Online (Sandbox Code Playgroud)
我认为迭代每个切片来初始化它太冗长了.如果切片具有更多尺寸,则代码将变得难以处理.是否有一种简洁的方法来初始化Go中的2D(或n维)切片?
内置函数的slice用途是什么?如何使用它?
我知道Pythonic切片的直接方式 - l1[start:stop:step].我想知道我是否有切片对象,那我该如何使用呢?
我正在通过优秀的Tour of Go工作.我使用以下解决方案完成了其中一个练习(#45):
func Pic(dx, dy int) [][]uint8 {
pic := make([][]uint8, dy) /* type declaration */
for i := range pic {
pic[i] = make([]uint8, dx) /* again the type? */
for j := range pic[i] {
pic[i][j] = uint8((i+j)/2)
}
}
return pic
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我必须使用两次类型的make语句uint8(请参阅代码段中的注释).这似乎是多余的,但我无法弄清楚如何以另一种方式做到这一点.
slice ×10
python ×6
go ×3
dataframe ×2
list ×2
pandas ×2
go-reflect ×1
javascript ×1
jquery ×1
multi-index ×1
python-3.x ×1
reflection ×1
sequence ×1
series ×1
types ×1