python-3.x 仅当其他列中存在值时,才将数据框复制到列

0md85ypi  于 2023-03-04  发布在  Python
关注(0)|答案(2)|浏览(96)

我有一个这样的数据框。

SMS                 Email 
   1               - or " " or nan
   2                     3
 - or " " or nan        100
- or " " or nan        - or " " or nan

这里-或““或nan表示位置可以是破折号或nan或空白值。现在我需要一个输出 Dataframe ,如

SMS                   Email                Status
1                    - or " " or nan        1
2                      3                    2
- or " " or nan        100                  100
- or " " or nan     - or " " or nan       - or " " or nan

输出DF的逻辑类似于:如果**SMS或Email都有值,则状态列应具有SMS值,**状态列不应具有nan、blank或破折号值,除非sms和email都为nan、blank或-。

vyswwuz2

vyswwuz21#

您可以用途:

df['Status']=df[['SMS','Email']].replace('[^0-9]+',np.nan,regex=True).bfill(1).iloc[:,0]
print(df['Status'])
0      1
1      2
2    100
3    NaN
Name: Status, dtype: object
hfyxw5xn

hfyxw5xn2#

df['Status']=df[['SMS','Email']].apply(pd.to_numeric,errors='coerce', axis=1).bfill(1).iloc[:,0]

相关问题