У меня есть что-то вроде
>>> df
user1 user2 param
0 1 2
a x d a
0 2 6 0 1 0 0
1 4 13 0 0 0 3
2 21 76 2 0 1 0
Обратите внимание, что user1
и user2
находятся на том же уровне, что и param
(побочный эффект слияния):
>>> df.columns.get_level_values(0)
Index(['user1','user2','param','param','param','param'], dtype='object')
>>> df.columns.get_level_values(1)
Index(['','',0,0,1,2], dtype='object')
Я хочу преобразовать все под param
в числа с плавающей запятой, но оставить user1
и user2
как целые числа. Я проверил этот поток , но я не уверен, как это преобразуется в значение столбец dtypes.
EDIT:
Код генератора
df = pd.DataFrame({'user1':[2,4,21,21],'user2':[6,13,76,76],'param1':[0,2,0,1],'param2':['x','a','a','d'],'count':[1,3,2,1]}, columns=['user1','user2','param1','param2','count'])
df = df.set_index(['user1','user2','param1','param2'])
df = df.unstack([2,3]).sort_index(axis=1)
df2 = pd.DataFrame({'user1':[2,5,21],'user2':[6,18,76]})
df2.columns = pd.MultiIndex.from_product([df2.columns, [''],['']])
final_df = df2.merge(df, on=['user1','user2'], how='outer').fillna(0)