Pandas 如果其他列值为NaN,请将列值设置为1

Pandas 如果其他列值为NaN,请将列值设置为1,pandas,Pandas,我到处都找过了,试过.loc.apply和使用lambda,但我仍然无法解决这个问题 我有一个熊猫数据框中的UCI国会投票数据集,每个民主党或共和党国会议员的1票对16票缺少一些选票 因此,我在每一个名为abs的投票栏后面插入了16列 如果对应的投票列是NaN,我希望每个abs列都是1 我在这个网站上读到的这些方法都不适合我 因此,下面的代码片段也不起作用,但它可能会提示我当前使用基本迭代Python语法的尝试 for i in range(16): for j in range(len

我到处都找过了,试过
.loc
.apply
和使用
lambda
,但我仍然无法解决这个问题

我有一个熊猫数据框中的UCI国会投票数据集,每个民主党或共和党国会议员的1票对16票缺少一些选票

因此,我在每一个名为
abs
的投票栏后面插入了16列

如果对应的投票列是NaN,我希望每个abs列都是1

我在这个网站上读到的这些方法都不适合我

因此,下面的代码片段也不起作用,但它可能会提示我当前使用基本迭代Python语法的尝试

for i in range(16):
    for j in range(len(cvotes['v1'])):
        if cvotes['v{}'.format(i+1)][j] == np.nan:
            cvotes['abs{}'.format(i+1)][j] = 1
        else:
            cvotes['abs{}'.format(i+1)][j] = 0
有什么建议吗

当投票值为NaN或1时,上面给出的abs值为1

编辑:

我看到了给出的答案,所以只在一个专栏中尝试了这一点

cols = ['v1']

for col in cols:
    cvotes = cvotes.join(cvotes[col].add_prefix('abs').isna().
                         astype(int))
但这给了我一个错误:

ValueError: columns overlap but no suffix specified: Index(['v1'], dtype='object')
我的数据类型是:

party     object
v1       float64
v2       float64
v3       float64
v4       float64
v5       float64
v6       float64
v7       float64
v8       float64
v9       float64
v10      float64
v11      float64
v12      float64
v13      float64
v14      float64
v15      float64
v16      float64
abs1       int64
abs2       int64
abs3       int64
abs4       int64
abs5       int64
abs6       int64
abs7       int64
abs8       int64
abs9       int64
abs10      int64
abs11      int64
abs12      int64
abs13      int64
abs14      int64
abs15      int64
abs16      int64
dtype: object

让我们用
添加前缀

col=[c1,c2...]
s=pd.DataFrame(df[col].values.tolist(),index=df.index)
s.columns=s.columns+1
df=df.join(s.add_prefix('abs').isna().astype(int))

对于列表中的c{u vote\u columns\u这里:cvots[f'abs{c}]=cvots[c].isna()
abs{c}
前面的
f'
是什么?这是格式的简写,所以你不需要在后面添加
.format(c)
。它不起作用……它实际上起作用了@QuangHoang,刚刚看到了新的专栏。那么我想我可以把真或假转换成整数。谢谢!我编辑了我的答案,以显示我根据您的答案所做的尝试,但它抛出了一个错误。@mLstudent33不需要循环抱歉,如果我不清楚,但如果我想要编号的abs列,每一票一列?更新?我最好阅读一些关于连接的文档,以便能够与您交谈。我现在正在大学学习RDBMS。