gpt4 book ai didi

python - 我什么时候应该使用 dt.column vs dt ['column'] pandas?

转载 作者:太空狗 更新时间:2023-10-30 02:39:19 25 4
gpt4 key购买 nike

我正在做一些计算和行操作,并意识到对于某些任务,例如数学运算,它们都有效,例如

d['c3'] = d.c1 / d. c2
d['c3'] = d['c1'] / d['c2']

我想知道是否在某些情况下使用一种比另一种更好,或者大多数人使用的是什么。

最佳答案

您真的应该停止将列作为属性访问,并养成使用方括号 [] 进行访问的习惯。这避免了您的列名有 illegal characters in python 的错误,嵌入空格,其中您的列名与内置方法共享相同的名称,以及不明确的用法,例如您有一个名为 index 的列:

In[13]:
df = pd.DataFrame(np.random.randn(5,4), columns=[' a', 'mean', 'index', '2'])
df.columns.tolist()

Out[13]: [' a', 'mean', 'index', '2']

因此,如果我们现在尝试访问列 2:

In[14]:
df.2
File "<ipython-input-14-0490d6ae2ca0>", line 1
df.2
^
SyntaxError: invalid syntax

它失败了,因为它是一个无效的名字,但是 df['2'] 可以工作

In[15]:

df.a
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-b9872a8755ac> in <module>()
----> 1 df.a

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
3079 if name in self._info_axis:
3080 return self[name]
-> 3081 return object.__getattribute__(self, name)
3082
3083 def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'a'

所以因为这真的是带有前导空格的 'a'(如果列名中的任何地方有空格,这也会失败)它在 KeyError 上失败

In[16]:
df.mean

Out[16]:
<bound method DataFrame.mean of a mean index 2
0 -0.022122 1.858308 1.823314 0.238105
1 -0.461662 0.482116 1.848322 1.946922
2 0.615889 -0.285043 0.201804 -0.656065
3 0.159351 -1.151883 -1.858024 0.088460
4 1.066735 1.015585 0.586550 -1.898469>

这更微妙,看起来它做了什么但实际上它只是返回方法地址,这里 ipython 只是漂亮地打印它

In[17]:
df.index

Out[17]: RangeIndex(start=0, stop=5, step=1)

上面我们的意图不明确,因为索引是一个成员,它返回的是 'index' 列。

因此您应该停止将列作为属性访问并始终使用方括号,因为它可以避免上述所有问题

关于python - 我什么时候应该使用 dt.column vs dt ['column'] pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798031/

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