pandas 根据条件将值添加到panda Dataframe 的多个列

9o685dep  于 2022-11-20  发布在  其他
关注(0)|答案(4)|浏览(152)

我有一个 Dataframe ,如下所示:

corpus    zero_level_name time    labels  A   B   C
 0  ff                      f               1   1
 1  gg  g                   G
 2  hh  h                   H                1  1   1
 3  ii  i                   I
 4  jj  j                   J                1

我想把0加到从A列到C列的所有空单元格中。是否可以在一个目标中完成此操作?

htzpubme

htzpubme1#

假设DataFrame中有NaN或空字符串,则可以用途:

df.update(df.loc[:, 'A':'C'].replace('', 0).fillna(0))
  • 注意:没有输出,DataFrame已在适当位置修改 *

还请注意,更改值并不会更改dtype。如果需要整数,请运行:

cols = df.loc[:, 'A':'C'].columns
df[cols] = df[cols].replace('', 0).fillna(0).astype(int)

更新的df

corpus zero_level_name time labels  A  B  C
0     ff                    f         1  1  0
1     gg               g    G         0  0  0
2     hh               h    H         1  1  1
3     ii               i    I         0  0  0
4     jj               j    J         1  0  0

如果只有空字符串:

df.update(df.loc[:, 'A':'C'].replace('', 0))

或仅限NaN:

df.update(df.loc[:, 'A':'C'].fillna(0))
sg3maiej

sg3maiej2#

因此,可能有更好的方法来做到这一点-但首先想到的是:

pd.concat([df[['corpus', 'zero_level_name', 'time', 'labels']],df[['A','B','C']].fillna(0)], axis=1)

我想这就是你要找的了(其他列按原样,A-〉C用0填充空白,得到一个df)

deyfvvtc

deyfvvtc3#

import numpy as np
import pandas as pd

df = pd.DataFrame(
    data=np.array([
        ['ff', 'gg', 'hh', 'ii', 'jj'],
        [None, 'g', 'h', 'i', 'j'],
        ['f', 'G', 'H', 'I', 'J'],
        [None, None, None, None, None],
        [1, None, 1, None, 1],
        [1, None, 1, None, None],
        [None, None, 1, None, None]

    ]).T,
    columns=['corpus', 'zero_level_name', 'time', 'labels', 'A', 'B', 'C'],
)

df[['A', 'B', 'C']] = df[['A', 'B', 'C']].fillna(0)
nzkunb0c

nzkunb0c4#

选择相关列并应用掩码。

cols = ['A', 'B', 'C']
df[cols] = df[cols].mask(df[cols] == '', 0)

相关问题