尝试编写一个For循环,以查看Pay_Day_Supply_Count
列中是否存在数字,如果存在,请将Days
列中的天数替换为0
。 / p>
Example Dataframe
|Days | Pay_Day_Supply_Count |
--------------------------------|
| 0 | 15 |
| -456 | 50 |
| 121 | 10 |
| 0 | 15 |
| 0 | 10 |
| 323 | 20 |
| 0 | 05 |
| -444 | 10 |
| 141 | 20 |
---------------------------------
Expected Output
|Days | Pay_Day_Supply_Count |
--------------------------------|
| 0 | 15 |
| 0 | 50 |
| 0 | 10 |
| 0 | 15 |
| 0 | 10 |
| 0 | 20 |
| 0 | 05 |
| 0 | 10 |
| 0 | 20 |
---------------------------------
这是我到目前为止尝试过的:
for i, p in enumerate(df["Days"]):
if df["PAY_DAY_SUPPLY_CNT"] != '':
p1 = p.replace('%d', 0)
df.at[i, 'Days'] = p1
返回的错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
答案 0 :(得分:3)
也许使用布尔掩码可能会有所帮助。不过不确定您的dtypes:
mask = df[Pay_Day_Supply_Count].notna()
df.loc[mask, "Day"]=0
答案 1 :(得分:1)
您可以使用numpy.where
函数在一行中完成此操作:
import pandas as pd
import numpy as np
df['Days'] = np.where(df["PAY_DAY_SUPPLY_CNT"] != '', 0 , df['Days'] )