У меня есть DataFrame
, как показано ниже:
>>> df=pd.DataFrame(np.array([['user1', 1, 10], ['user1', 2, 25], ['user2', 2, 20], ['user3', 3, 30], ['user4', 3, 50]]), columns=['UserId', 'Dim', 'Count'])
>>> df
UserId Dim Count
0 user1 1 10
1 user1 2 25
2 user2 2 20
3 user3 3 30
4 user4 3 50
Я хочу использовать Dim
столбец в качестве измерения, для этого я делаю:
>>> df_cat = pd.get_dummies(df, columns=['Dim'])
>>> df_cat
UserId Count Dim_1 Dim_2 Dim_3
0 user1 10 1 0 0
1 user1 25 0 1 0
2 user2 20 0 1 0
3 user3 30 0 0 1
4 user4 50 0 0 1
Но вместо этого0
или 1
, я хочу связать значение в столбце Count
как вес, т.е. мой ожидаемый результат должен выглядеть следующим образом:
UserId Count Dim_1 Dim_2 Dim_3
0 user1 10 10 0 0
1 user1 25 0 25 0
2 user2 20 0 20 0
3 user3 30 0 0 30
4 user4 50 0 0 50
В настоящее время я достигаю этого, используя for
loop:
for i, row in df_cat.iterrows():
for col in df_cat.columns:
if(row[col] == 1):
df_cat.loc[i, col]=df_cat.Count[i]
Дайте мне знать, если есть лучший способ сделать это вместоиспользование 2 for
циклов, так как цикл занимает много времени, поскольку фактический набор данных огромен.