我有一个像这样的数据框架。我已经创建了3个新列,这些列将接受其他列的值。我希望函数列分开,并为每个函数获取每个用户的总时数。
User Function Total hours Damage Processing problem solve damages sweeper
schae Damage Processing 9.36
Julie Problem solve 9.70
John sweeper 18.9
Dan Damages 1.83
Dan Damages 1.83
Julie Damages 1.83
Dan Problem solve 1.83预期的输出将类似于
User Function Total hours Damage Processing problem solve damages sweeper
schae Damage Processing 9.36 9.36
Julie Problem solve 9.70 9.70
John sweeper 18.9 18.9
Dan Damages 1.83 1.83
Dan sweeper 1.83 1.83
Julie Damages 1.83 1.83
Dan Problem solve 1.83 1.83我想到了pd.melt,但它抛出了一个不存在的错误值var
res = pd.melt(result,id_vars = ['Function'],value_vars=['Total hours'])发布于 2020-03-26 15:59:15
下面是一种使用get_dummies和df.assign的方法
out = (df[['User','Function','Total hours']].assign(**pd.get_dummies(df['Function'])
.mul(df['Total hours'],axis=0).replace(0,np.nan)))
print(out) User Function Total hours Damage Processing Damages \
0 schae Damage Processing 9.36 9.36 NaN
1 Julie Problem solve 9.70 NaN NaN
2 John sweeper 18.90 NaN NaN
3 Dan Damages 1.83 NaN 1.83
4 Dan Damages 1.83 NaN 1.83
5 Julie Damages 1.83 NaN 1.83
6 Dan Problem solve 1.83 NaN NaN
Problem solve sweeper
0 NaN NaN
1 9.70 NaN
2 NaN 18.9
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 1.83 NaN 发布于 2020-03-26 16:17:30
for i in range(len(df)):
col = df.loc[i]['Function']
df.at[i, col] = df.xs(i)['Total hours']
print(col)试试这个!变量col找到要为其插入Total hours值的列。
https://stackoverflow.com/questions/60871085
复制相似问题