我有一个包含0 and 12/02/19日期的列,我希望将所有日期转换为1并乘以列Enrolls_F
-
我更喜欢使用REGEX,但任何其他选项也应该可以,它是一个大型数据集,我尝试使用简单的for循环,但我的内核无法运行它。
-
数据:
df = pd.DataFrame({ 'Enrolled_Date': ['0','2019/02/04','0','0','2019/02/04','0'] , 'Enrolls_F': ['1.11','1.11','0.222','1.11','5.22','1'] }) 尝试:
尝试搜索所有内容,从2开始,替换为1,再乘以Enrolls_F
df_test = (df.replace({'Enrolled_Date': r'2.$'}, {'Enrolled_Date': '1'}, regex=True)) * df.Enrolls_F
# Nothing happens 发布于 2019-12-19 02:04:02
IIUC,这应该可以帮助你解决问题;
import pandas as pd
import numpy as np
df = pd.DataFrame({ 'Enrolled_Date': ['0','2019/02/04','0','0','2019/02/04','0'] , 'Enrolls_F': ['1.11','1.11','0.222','1.11','5.22','1'] })
df['Enrolled_Date'] = np.where(df['Enrolled_Date'] == '0',0,1)
df['multiplication_column'] = df['Enrolled_Date'] * df['Enrolls_F']
print(df)输出:
Enrolled_Date Enrolls_F multiplication_column
0 0 1.11
1 1 1.11 1.11
2 0 0.222
3 0 1.11
4 1 5.22 5.22
5 0 1发布于 2019-12-19 02:10:43
如果你想输出是浮点型的,试试这个
df.Enrolled_Date.ne('0').astype(int) * df.Enrolls_F.astype(float)
Out[212]:
0 0.00
1 1.11
2 0.00
3 0.00
4 5.22
5 0.00
dtype: float64https://stackoverflow.com/questions/59397463
复制相似问题