'Pandas在重新索引轴时是否忽略copy关键字?'

2024-04-25 12:59:10 发布

您现在位置:Python中文网/ 问答频道 /正文

快速演示:

import numpy as np
import pandas as pd
from itertools import product

np.random.seed(1)

team_names = ['Yankees', 'Mets', 'Dodgers']
jersey_numbers = [35, 71, 84]
game_numbers = [1, 2]
observer_names = ['Bill', 'John', 'Ralph']
observation_types = ['Speed', 'Strength']

row_indices_1 = list(product(team_names, jersey_numbers, game_numbers, observer_names, observation_types))
observation_values_1 = np.random.randn(len(row_indices_1))

tns_1, jns_1, gns_1, ons_1, ots_1 = zip(*row_indices_1)

data_1 = pd.DataFrame({
                        'team': tns_1, 
                        'jersey': jns_1, 
                        'game': gns_1, 
                        'observer': ons_1, 
                        'obstype': ots_1, 
                        'value': observation_values_1
                    })

data_1 = data_1.set_index(['team', 'jersey', 'game', 'observer', 'obstype'])
data_1 = data_1.unstack(['observer', 'obstype'])
data_1.columns = data_1.columns.droplevel(0)

row_indices_2 = list(product(team_names, jersey_numbers))
observation_values_2 = np.random.randn(len(row_indices_2))

tns_2, jns_2, = zip(*row_indices_2)

data_2 = pd.DataFrame({'team': tns_2, 'jersey': jns_2, 'value': observation_values_2})
data_2 = data_2.set_index(['team', 'jersey'])

data_1是一个很大的“ol”,行上有3级多索引,列上有2级多索引。data_2是一个“lil-guy”,行上有两级多索引,只有一列数据。在

奇怪的行为如下:

^{pr2}$

这使我返回data_1,行顺序颠倒。伟大的。但当我随后展示data_1时,我希望它能保持翻转状态(洋基第一,道奇最后)。但这是不对的。data_1本身似乎不受上述命令的影响。在

但是,当调用data_2时,行为是不同的。呼叫:

^{3}$

根据需要显示data_2的翻转版本。随后打给data_2的电话显示翻转的顺序(扬基队第一,道奇队最后)。与data_1的情况完全相反。在

这是怎么回事?为什么索引翻转对data_2起作用而对data_1不起作用?在


Tags: importgamedatanamesnpteamobserverrow

热门问题