gpt4 book ai didi

python - Pandas 专栏创建

转载 作者:行者123 更新时间:2023-11-28 19:54:32 25 4
gpt4 key购买 nike

鉴于以下创建新列的尝试之一似乎失败了,我很难理解列命名约定背后的概念:

from numpy.random import randn
import pandas as pd

df = pd.DataFrame({'a':range(0,10,2), 'c':range(0,1000,200)},
columns=list('ac'))
df['b'] = 10*df.a
df

给出以下结果:

enter image description here

然而,如果我尝试通过替换为以下行来创建 b 列,则不会出现错误消息,但数据帧 df 仍然只包含 a 列和 c 列。

df.b = 10*df.a   ### rather than the previous df['b'] = 10*df.a ###

pandas 做了什么,为什么我的命令不正确?

最佳答案

你所做的是将属性 b 添加到你的 df:

In [70]:
df.b = 10*df.a
df.b

Out[70]:
0 0
1 20
2 40
3 60
4 80
Name: a, dtype: int32

但是我们看到没有添加新的列:

In [73]:    
df.columns

Out[73]:
Index(['a', 'c'], dtype='object')

这意味着如果我们尝试 df['b'],我们会得到一个 KeyError,为避免这种歧义,您应该在分配时始终使用方括号。

例如,如果您有一个名为 indexsummax 的列,那么执行 df.index 将返回索引而不是索引列,同样 df.sumdf.max 会搞砸那些 df 方法。

我强烈建议始终使用方括号,这样可以避免歧义,而且最新的 ipython 能够使用方括号解析列名。将数据框视为系列字典也很有用,在其中使用方括号分配和返回列是有意义的

关于python - Pandas 专栏创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36924407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com