如果 Number 包含一些值而 Code 包含0
,则我尝试用值填充列 Final 代码中的0
,应替换为 Number 列的值,我可以这样做:
df['Final'] = np.where(df['Code'] == 0, df['Number'], df['Code'])
但对于行号5、6和7我遇到了一个问题,该值应位于最终列中,该列应至少填充00
个值。熊猫如何做到这一点?双零(00
)只能连续出现。
答案 0 :(得分:2)
答案 1 :(得分:1)
我们可以在两列中count
归零,然后在np.where
中取零:
count1 = df['Number'].astype(str).str.count('0')
count2 = df['Code'].replace(0, np.NaN).astype(str).str.count('0')
df['Final'] = np.where(df['Code']==0 | (count1<count2), df['Number'], df['Code'])
输出
No Number Code Final
0 1 78797071 0 78797071
1 2 0 89797071 89797071
2 3 0 57797074 57797074
3 4 39797571 0 39797571
4 5 62170000 62175268 62175268
5 6 52130000 52000000 52000000
6 7 52146700 52140000 52140000