我有一个数字范围从1到3的df。
Pclass
3
2
2
1
1
2我想把它们分成两组:
二等= 3-2
头等舱=1
使用
cut_labels = [ "second class","first class"]
cut_points = [1,2,3]
df["Lux_normal"] = pd.cut(df["Pclass"], cut_points, labels=cut_labels垃圾箱不正确,我怎么才能正确地把它们装好呢?
发布于 2019-12-26 07:49:55
我认为这里应该使用cut,但是稍微复杂一点,并且将1和2以上的所有值替换为misisng值,如果只有1,2,3可能的值,那么fillna就会修复它。
首先更改cut_labels列表中的顺序,然后为左闭间隔添加right=False,然后用second class替换缺失的值
cut_labels = ["first class", "second class"]
cut_points = [1,2,3]
df["Lux_normal"] = pd.cut(df["Pclass"],
cut_points,
labels=cut_labels,
right=False).fillna('second class')但是更好的是,这里应该使用Series.map来替换为字典值,如果没有匹配值,那么可以再次用fillna替换这些值:
d = {1: "first class", 2:'second class', 3:'second class'}
df["Lux_normal1"] = df["Pclass"].map(d).fillna('another class')
print (df)
Pclass Lux_normal Lux_normal1
0 3 second class second class
1 2 second class second class
2 2 second class second class
3 1 first class first class
4 1 first class first class
5 2 second class second classhttps://stackoverflow.com/questions/59485424
复制相似问题