【问题标题】:Writing a new column in pandas based on other column根据其他列在熊猫中编写新列
【发布时间】:2021-10-18 07:31:01
【问题描述】:

我正在尝试根据包含字符串值的其他两列的值来分配一列值。我尝试了以下方法,它不会生成任何输出,只是将要填充的列留空。 谁有更好的解决方案?

for i in Table.index:
if pd.notnull(Table['Column1'][i]) and pd.notnull(Table['Column2'][i]):
Table.loc[Table['Column3'][i]] = Table['Column2'][i]

【问题讨论】:

    标签: python pandas dataframe loops


    【解决方案1】:

    您可以尝试通过布尔掩码和 loc 访问器:

    mask=Table['Column1'].notna() & Table['Column2'].notna()
    Table.loc[mask,'Column3']=Table.loc[mask,'Column2']
    

    【讨论】:

    • 谢谢,但这会引发错误(KeyError: 'Column1')。当我将此列作为独立命令打印时,它不会引发任何错误。是否仍然需要将它集成到索引 i 的 for 循环中?
    • @progammerattempt 先生,这个答案是根据您提供的代码(bcz 您在代码中使用了“Column1”)......请检查“Column1”是否存在于@987654322 的输出中@
    • 是的,它显然存在,所以现在不确定是什么原因造成的......
    • @progammerattempt 先生,请再次检查,因为它的两侧可能有一个空格 ' '
    • ..它没有,因为该列可以打印并显示在列命令中..mmmh
    【解决方案2】:

    Series.notna& 一起用于按位AND 并在DataFrame.loc 中设置值:

    m = Table['Column1'].notna() & Table['Column2'].notna()
    Table.loc[m, 'Column3'] = Table.loc[m, 'Column2']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2013-08-30
      • 2021-08-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      相关资源
      最近更新 更多