我想创建一个新列,并用NA
和0
替换1
而不丢失值。
#df
col1
1
3
5
6
我想要什么:
#df
col1 NewCol
1 1
3 1
0
5 1
0
6 1
这是我尝试过的:
df['NewCol']=df['col1'].fillna(0)
df['NewCol']=df['col1'].replace(df['col1'].notnull(), 1)
第二行似乎不正确。
有什么建议吗?
答案 0 :(得分:1)
首先,您需要将所有“ na”转换为“ 0”。您如何执行此操作将因范围而异。 对于单个列,您可以使用:
df['DataFrame Column'] = df['DataFrame Column'].fillna(0)
对于整个数据框,您可以使用:
df.fillna(0)
此后,您需要将所有非零替换为1。您可以这样做:
for index, entry in enumerate(df['col']):
if entry != 0:
df['col'][index] = 1
请注意,此方法将0计数为空条目,这可能是也可能不是所需的功能。
答案 1 :(得分:1)
您可以尝试:
df['NewCol'] = [*map(int, pd.notnull(df.col1))]
希望这会有所帮助。