python - 如何删除和移动 pandas df 列中的值

标签 python pandas merge del

我有一个 pandas df,我想对其进行操作,以便对其进行排序。所以对于下面的 df,我想订购 ['I']。因此值将显示为 10-50。我有 2 个选项可以执行此操作;

1) 尝试删除列 ['G']['H'] 中的值。因此,如果值为 == X 则删除。

2) 当它们是 == X

时尝试合并相同列中的值
import pandas as pd

d = pd.DataFrame({
        'J' : [10,'B','C','C',50],
        'I' : ['B',20,30,40,'C'],
        'H' : ['X','A','C','B','X'],         
        'G' : ['X', 'B', 'A','B','X'],                                 
        })

输出:

   G  H   I   J
0  X  X   B  10
1  B  A  20   B
2  A  C  30   C
3  B  B  40   C
4  X  X   C  50

选项 1 是我们从 Column H 中删除 X 并且预期的输出将是:

   G  H   I   J
0  X  B  10
1  B  A  20   B
2  A  C  30   C
3  B  B  40   C
4  X  C  50

选项 2 是我们在 Column G-H 中的 X 上合并,预期输出为:

   G   H   I   J
0  XX  B  10
1  B   A  20   B
2  A   C  30   C
3  B   B  40   C
4  XX  C  50

我玩过 df = df.drop(df.H == 'X') 但这会删除整行。

最佳答案

选项 1:

对于满足条件 df.H == 'X' 的行,您可以将值左移:

具有以下变量定义:

hij = ['H', 'I', 'J']
x = df.H=='X'

我们可以简洁地写出轮类分配。

df.loc[x, hij] = df.loc[x, hij].apply(lambda x: x.shift(-1), axis=1)
outputs:
    G   H   I   J
0   X   B   10  NaN
1   B   A   20  B
2   A   C   30  C
3   B   B   40  C
4   X   C   50  NaN

选项 2:

原理相同,但需要两个语句。

我们可以将 H 连接到 G

df.loc[x, 'G'] = df.loc[x, 'G'] + df.loc[x, 'H']
# df.loc[x, 'G'] = df.loc[x, ['G, 'H']].sum(axis=1)
# or df.loc[x, ['G', 'H']].apply(np.sum, axis=1)
# or df.loc[x, 'G'] = df.loc[x, ['G', 'H']].apply(lambda x: (x + x.shift(-1))[0], axis=1)

并按照选项 1 进行转换

df.loc[x, hij] = df.loc[x, hij].apply(lambda x: x.shift(-1), axis=1)
final output:
    G   H   I   J
0   XX  B   10  NaN
1   B   A   20  B
2   A   C   30  C
3   B   B   40  C
4   XX  C   50  NaN

关于python - 如何删除和移动 pandas df 列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635104/

相关文章:

python - 只有一个带 argparse 的命令行参数

android - 如何通过在 Raspberry Pi 3 B 上使用 python 3 查找 android 手机 ip

python - 如何检查 DataSeries 的连续性?

python - 如何将 pandas 中的 log2 比例转换为正常比例

sql - Oracle:如何UPSERT(更新或插入表?)

两组数据之间的 Matlab 日期不匹配。帮助!

python - 类型错误:参数由名称 ('axis' ) 和位置 (2) 给出

python - 使用 Pandas 从 .txt 文件创建 DataFrame

python - 合并每个 id 的后半行,但每个 id 的行不相同

git - VS 团队资源管理器 merge 冲突