Попробуйте приведенный ниже код. Надеюсь, что это поможет:
import pandas as pd
df = pd.DataFrame({'A':[1,2,3,4],'B':[2,1,3,2],'C':[3,4,2,1],'D':[4,2,1,3]});
data = {'A':[1,2,3,4],'B':[2,1,3,2],'C':[3,4,2,1],'D':[4,2,1,3]}
Преобразование данных в требуемый формат.
new_data = dict()
for key, value in data.items():
for data1 in value:
if data1 in new_data.keys():
if key in new_data[data1]:
pass
else:
new_data[data1].append(key)
else:
new_data[data1]=[key]
Если длина значений для каждого ключа, если не будет одинаковой, то панды не будут создаватьдатафрейм для словаря пройден. Следовательно, в этом случае необходимо преобразовать длину значения в значение, равное 4.
for key ,value in new_data.items():
dif = 4 - len(value)
new_data[key] = value + [None]*dif
Выход данных будет:
new_data
{1: ['A', 'B', 'C', 'D'],
2: ['A', 'B', 'C', 'D'],
3: ['A', 'B', 'C', 'D'],
4: ['A', 'C', 'D', None]}
Теперь преобразуем его в кадр данных:
1 2 3 4
0 A A A A
1 B B B C
2 C C C D
3 D D D None