раскладывание панд от длинного до широкого формата - PullRequest
0 голосов
/ 12 октября 2019

Вероятно, это будет помечено как дубликат, но я не могу решить проблему, несмотря на попытку этого ответа. Проблема в том, что у меня есть данные в длинном формате, и для каждого значения subject требуется новая строка, а beta должен расшириться до A_i_beta, A_j_beta ... и т. Д. фактический набор данных.

Я сделал небольшой пример своих данных, запустил приведенный ниже код, и он был успешным. Но когда я увеличил масштаб до фактического набора данных, я получил ошибку. Вот мой пример данных и кода:

subject name    region  xyz beta
1   A   i   54 -52 8    0.149812742
1   B   i   54 -52 8    1.23882482
2   A   i   54 -52 8    -1.150757713
2   B   i   54 -52 8    -0.635049755
1   A   j   16 -66 58   2.452675111
1   B   j   16 -66 58   1.193138828
2   A   j   16 -66 58   -1.063844842
2   B   j   16 -66 58   -0.69318946

df = df.drop('xyz', axis=1)
df = df.set_index(['subject', 'name', 'region'])
df = df.unstack()
df.columns = [f'{i[0]}_{i[1]}' for i in df.columns]
df = df.reset_index()
print(df)

   subject name    beta_i    beta_j
0        1    A  0.149813  2.452675
1        1    B  1.238825  1.193139
2        2    A -1.150758 -1.063845
3        2    B -0.635050 -0.693189

Так что это работает. Но затем, когда я применяю его к моему фактическому набору данных, я получаю следующую ошибку:

df = df.set_index(['subject', 'name', 'region'])
df = df.unstack()

ValueError: Index contains duplicate entries, cannot reshape

Я не совсем уверен, куда идти с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...