gpt4 book ai didi

python - 如何根据条件删除 pandas 值并相应地移动行

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:52 24 4
gpt4 key购买 nike

例如,我有一个像这样的 DataFrame:

       Rank #1       Rank #2      Rank #3        Rank #4     status 
0 A B D C in
1 B C A D out
2 A D C B in
3 A B C D out
4 D C B A out
5 D A C B out
...

如果status == out,如何删除 A 值,然后将其他行排名值向左移动?

我的预期结果是:

     Rank #1       Rank #2      Rank #3        Rank #4     status 
0 A B D C in
1 B C D out
2 A D C B in
3 B C D out
4 D C B out
5 D C B out
...

最佳答案

这是一种方法。

import pandas as pd, numpy as np

df = pd.DataFrame({1: ['A', 'B', 'A','A', 'D', 'D'],
2: ['B', 'C', 'D', 'B', 'C', 'A'],
3: ['D', 'A', 'C', 'C', 'B', 'C'],
4: ['C', 'D', 'B', 'D', 'A', 'B'],
'status': ['in', 'out', 'in', 'out', 'out', 'out']})

mask = df['status'] == 'out'
df.loc[mask, :] = df.loc[mask, :].replace('A', '')

A = [list(''.join(i)) for i in df.iloc[:, :-1].values]

df_res = pd.DataFrame(A).fillna('').assign(result=df.status)

结果

   0  1  2  3 result
0 A B D C in
1 B C D out
2 A D C B in
3 B C D out
4 D C B out
5 D C B out

说明

  1. 将所选行的“A”替换为空字符串。
  2. 通过列表理解将条目向左移动。
  3. 创建结果数据框并添加回“状态”列。

关于python - 如何根据条件删除 pandas 值并相应地移动行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49183392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com