python - 数据框组中的列条件

标签 python pandas

       A     B     C     D
0    Red  10.0  11.5  12.0
1    Red  10.5  11.5  12.0
2    Red  11.0  11.5  12.0
3    Red  12.0  11.5  12.0
4  White  10.0  10.5  11.0
5  White  10.5  10.5  11.0
6  White  11.0  10.5  11.0
7  White  12.0  10.5  11.0

我想创建一个新的 df1,并满足以下条件:

每个 A 组(“红色”和“白色”):

  • 如果B组中存在C值,则取C=B的行。
  • 如果B组中不存在C值,则取D=B所在的行。

我的意思是,新的 df1 应该是:

       A     B     C     D
3    Red  12.0  11.5  12.0
5  White  10.5  10.5  11.0

最佳答案

您可以使用boolean indexingconcat ,然后 drop_duplicates对于默认订购添加 sort_index :

m1 = df['B'] == df['C']
m2 = df['B'] == df['D']
df = pd.concat([df[m1], df[m2]]).drop_duplicates('A').sort_index()
print (df)
       A     B     C     D
3    Red  12.0  11.5  12.0
5  White  10.5  10.5  11.0

关于python - 数据框组中的列条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49086932/

相关文章:

Python 正则表达式匹配

python - 在 Pandas 中将所有选定值替换为 NaN

python - 按单个字符分组,否则拆分

由于 unicode 问题,Python 无法导出到 Stata?

regex - PANDAS 在字符串列中查找确切的单词和单词之前,并将该新列附加到 python (pandas) 列中

python-3.x - Pandas 使用 bool 值进行计算

python - unittest安装报错找不到满足要求的版本

python - 使用 2 个不同的列删除其他数据框中存在的行

mysql - 使用 datetime.date 索引索引 Pandas 数据框会导致 KeyError

python - 应用基于百分比值的随机生成器