假设我有一个数据框
age Late
1 1
2 5
3 48
4 46
5 6
...
我想将Late
中46或48的所有值替换为Late
的中位数。我相信命令是
trainDF.groupby('Late').transform(getmedian)
然而,结果是整个数据帧trainDF
?或者它只是Late
列?
那就是,下面的内容是否有意义?
trainDF=trainDF.groupby('Late').transform(getmedian)
或者以下是否有意义?
newLate = trainDF.groupby('Late').transform(getmedian)
我试过
newLate = trainDF.groupby('Late').transform(getmedian)
newLate.max()
打印出Unnamed: 0
和trainDF['newLate'].max()
打印出KeyError: 'newLate'
如果我尝试
trainDF=trainDF.groupby('Late').transform(getmedian)
并打印
trainDF['Late'].max()
它说KeyError: 'Late'
我应该怎么做才能存储替换Late
中46和48值的新数据框?我问,因为我最终希望通过打印修改后的Late
列的最大值确保其有效,并确保它显示6(或任何小于46的数字),而不是48
答案 0 :(得分:2)
你在这里问了很多问题,但我会解决看起来很重要的问题:
我想将Late中的所有值替换为46或48,其中间值为Late。
你可以这样做:
>>> df = pd.DataFrame({'age': [1,2,3,4,5],
'Late': [1,5,48,46,6]})
>>> df.loc[df['Late'].isin([46, 48]), 'Late'] = df['Late'].median()
>>> df
Late age
0 1 1
1 5 2
2 6 3
3 6 4
4 6 5
答案 1 :(得分:1)
这是一个很好的衬垫:
trainDF["Late"].loc[(trainDF["Late"] == 48) | (trainDF["Late"] == 46)] = trainDF["Late"].median()
请记住,groupby并不真正适用于您的情况并且它返回DataFrame
- ish对象