Вероятно, это будет помечено как дубликат, но я не могу решить проблему, несмотря на попытку этого ответа. Проблема в том, что у меня есть данные в длинном формате, и для каждого значения 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
Я не совсем уверен, куда идти с этим.