【问题标题】:Apply condition on dataframe column pandas在数据框列熊猫上应用条件
【发布时间】:2023-01-26 20:19:31
【问题描述】:

如果我有这样的数据框:

date          A             B            C
01.01.2003    01.01.2003   
02.01.2003
03.01.2003                03.01.2003
05.01.2003    05.01.2003
06.01.2003                06.01.2003
08.01.2003    08.01.2003  08.01.2003    08.01.2003

如果 A、B、C 列中的值都相等,我想更改我想删除 A 列和 B 列中的值,保留 C。 所以输出

date          A             B            C
01.01.2003    01.01.2003   
02.01.2003
03.01.2003                03.01.2003
05.01.2003    05.01.2003
06.01.2003                06.01.2003
08.01.2003                             08.01.2003

我申请了 np.where 但错误说条件不适用于时间戳

np.where((df['A'] & df ['B'] == df['C]'),
           df['A'] & df['B], '')

谢谢你的领导

【问题讨论】:

  • 你没有显示错误。你的代码有很多问题

标签: python pandas numpy conditional-statements


【解决方案1】:

您可以使用 pandas.DataFrame.loc 和行选择的两个条件,即 A=B 和 B=C,并将 [None] 分配给 A 和 B 字段。

df.loc[(df['A']==df['B']) & (df['B']==df['C']), ['A', 'B']] = [[None, None]]

输出

         date            A           B           C
0  01.01.2003  01.,01.2003        None        None
1  02.01.2003         None        None        None
2  03.01.2003         None  03.01.2003        None
3  05.01.2003   05.01.2003        None        None
4  06.01.2003         None  06.01.2003        None
5  08.01.2003         None        None  08.01.2003

查看演示 here。

【讨论】:

    【解决方案2】:

    在all的帮助下使用boolean indexing:

    df.loc[df[['A', 'B']].eq(df['C'], axis=0).all(axis=1), ['A', 'B']] = np.nan
    

    输出:

             date           A           B           C
    0  01.01.2003  01.01.2003        None        None
    1  02.01.2003        None        None        None
    2  03.01.2003         NaN  03.01.2003        None
    3  05.01.2003  05.01.2003        None        None
    4  06.01.2003         NaN  06.01.2003        None
    5  08.01.2003         NaN         NaN  08.01.2003
    

    【讨论】:

      猜你喜欢
      • 2018-11-02
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2023-02-02
      • 2020-10-14
      • 2022-11-13
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多