Python 熊猫面板:复制与查看

Python 熊猫面板:复制与查看,python,pandas,Python,Pandas,因此,基本上,如果我想更改原始df中的数据,我必须始终使用.loc[]。但请考虑下面的 >>> import pandas as pd >>> from scipy import random >>> from numpy import arange >>> T, N = 4, 5 >>> TIndex = arange(0, T) >>> FIndex = arange(0, N)

因此,基本上,如果我想更改原始df中的数据,我必须始终使用
.loc[]
。但请考虑下面的

>>> import pandas as pd
>>> from scipy import random
>>> from numpy import arange

>>> T, N = 4, 5
>>> TIndex = arange(0, T)
>>> FIndex = arange(0, N)

>>> wp = pd.Panel(items=['A', 'w', 'l', 'a', 'x', 'X', 'd', 'profit'],
...               major_axis=TIndex, minor_axis=FIndex)
>>> wp.loc['a', 0, 0] = 0 
>>> df = wp.loc[0, 'a']
>>> df.loc[0, 'a'] = 'test'
>>> df.loc[0, 'a']
Out[379]: 'test'
>>> wp.loc['a', 0, 0]
Out[380]: 0
我做错了什么


此外,还未抛出带有CopyWarning的设置。当我在数据帧级别犯这些错误时,通常会得到这些错误。这非常令人恼火。

我可以通过在调用
loc
中选择“按标签”来修改数据框和原始面板。文档中说,
loc
是,因此我不确定您发布的代码是否能正常工作:在将示例粘贴到IPython控制台(?)时,我遇到了一个
keyrerror:“[items]中没有标签[0]”

而不是

df=wp.loc[0,'a']

df=wp.loc['a']
然后使用
iloc
和整数索引进行修改:

In [3]: df
Out[3]:
    0   1   2   3   4
0   0 NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN

[4 rows x 5 columns]

In [4]: df.iloc[0, 0] = 'test'

In [5]: df
Out[5]:
      0    1    2    3    4
0  test  NaN  NaN  NaN  NaN
1   NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN

[4 rows x 5 columns]

In [6]: wp.loc['a']
Out[6]:
      0    1    2    3    4
0  test  NaN  NaN  NaN  NaN
1   NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN

[4 rows x 5 columns]

什么是
T
N
?如果可能,最好提供一个自包含的示例。一些正整数。我在那里添加了一些值。)您使用的是什么版本?您的示例为我在
df=wp.loc[0,'a']
上抛出了一个KeyError。0不在您的项目中。到目前为止很好-我需要修改在“使”工作示例“哑巴”时丢失的混乱部分。如果可以的话,我会跟进一个问题:如果
df
不应该是基于“项目”的切片,而是基于长轴:我可以安全地影响
df=wp.major_xs(0)
,值将设置到
wp
?切片面板可以显示视图,并且应该如此标记;这是一个错误,在设置查看的数据帧时,应使用copy进行设置:@FooBar:就我所能测试的而言,不,您不能通过长轴设置值。无论这是否是熊猫的正确行为,我很抱歉地说,我不知道。@FooBar正如文档中所述,您应该只使用多轴索引器,
ix/iloc/loc
;切片和选择可能会起作用(并且只在一个数据类型的情况下),但一般来说并不可靠,应该避免。杰夫:所以你说直接分配
wp.loc[…]=foo
会起作用,但是排序的东西
bar=wp.loc[…];bar[…]=foo
不一定要避免?