【问题标题】:How to efficiently update conditional set of columns in large dataframe如何有效地更新大型数据框中的条件列集
【发布时间】:2022-01-24 14:13:47
【问题描述】:

给定一个包含 Column_1 ... Column_n 列和阈值 X 的大型 pandas 数据框。一旦每行中的 X 被破坏,将所有后续列设置为 X 的有效方法是什么。 IE。假设我们有阈值 1 和数据帧,原始数据帧在链接中:

那么更新后的数据框应该和第二个链接一样:

提前非常感谢!

【问题讨论】:

  • 请将您的数据框作为文本而不是图像提供
  • @Corralien - 我在您的回答下方发表了评论。我认为我对我正在寻找的东西的原始解释令人困惑?

标签: python pandas


【解决方案1】:

试试:

df = pd.DataFrame({'A': [0.1, 1.1, 0.4], 'B': [0.3, 0.0, 0.3],
                   'C': [1.2, -2.0, -0.1], 'D': [5.0, 4.0, 0.0]})

out = df.gt(1).mask(lambda x: x == False).ffill(axis=1).astype(float).fillna(df)
print(out)

# Output
     A    B    C    D
0  0.1  0.3  1.0  1.0
1  1.0  1.0  1.0  1.0
2  0.4  0.3 -0.1  0.0

【讨论】:

  • 谢谢,但这还不够。您的逻辑将所有值 abs(x)>1 剪辑为 1。但是,预期的逻辑应该将后续列上的所有内容设置为 1(如如果 A_ij > 1,则 A_ik = 1 对于所有 k>=j)。例如,在您的数据框 B 列中,索引 1 仍然为 0,但应该已更新为 1。对不起,如果我解释得不好
猜你喜欢
  • 2015-12-27
  • 2019-07-09
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多