如何在多个条件下在数据框的新列中填充值

时间:2019-10-07 10:53:54

标签: python pandas dataframe

如果 Number 包含一些值而 Code 包含0,则我尝试用值填充列 Final 代码中的0,应替换为 Number 列的值,我可以这样做:

df['Final'] = np.where(df['Code'] == 0, df['Number'], df['Code'])

但对于行号5、6和7我遇到了一个问题,该值应位于最终列中,该列应至少填充00个值。熊猫如何做到这一点?双零(00)只能连续出现。

2 个答案:

答案 0 :(得分:2)

您可以将Series.str.count的值与|的{​​{1}}和bitwise OR的{​​{1}}与numpy.where的链条3条件进行比较:

&

详细信息

bitwise AND

答案 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