我有一个 pandas DataFrame 如下:
import pandas as pd
data1 = {"column1": ["A", "B", "C", "D", "E", "F", "G"],
"column2": [338, 519, 871, 1731, 2693, 2963, 3379],
"column3": [5, 1, 8, 3, 731, 189, 9],
"columnA" : [5, 0, 75, 150, 0, 0, 0],
"columnB" : [0, 32, 0, 96, 0, 51, 0],
"columnC" : [0, 42, 0, 42, 0, 42, 42]}
df = pd.DataFrame(data1)
df
>>> column1 column2 column3 columnA columnB columnC
0 A 338 5 5 0 0
1 B 519 1 0 32 42
2 C 871 8 75 0 0
3 D 1731 3 150 96 42
4 E 2693 731 0 0 0
5 F 2963 189 0 51 42
6 G 3379 9 0 0 42
columnA、columnB 和 columnC 中的值是整数或零。我想检查 columnA、columnB 和 columnC 中的值,如果 columnC 中有整数和 columnA 和 columnB 列中的零。
如果 columnC 中有一个值,而 columnA 和 columnB 中有一个值,我希望 1 出现在新列 中新列。否则,newcolumn 中的值应为 0。
生成的数据框应该是:
>>> column1 column2 column3 columnA columnB columnC newcolumn
0 A 338 5 5 0 0 0
1 B 519 1 0 32 42 0
2 C 871 8 75 0 0 0
3 D 1731 3 150 96 42 0
4 E 2693 731 0 0 0 0
5 F 2963 189 0 51 42 0
6 G 3379 9 0 0 42 1
.... ..... ...........
我知道如何按列检查值(例如使用 df.columnA == 0)并创建一个新列非常简单。但是,如何“按行”检查呢?
请您参考如下方法:
你可以使用 np.where
df['newcolumn'] = np.where((df.columnA ==0) & (df.columnB == 0) & (df.columnC!= 0), 1, 0)
column1 column2 column3 columnA columnB columnC newcolumn
0 A 338 5 5 0 0 0
1 B 519 1 0 32 42 0
2 C 871 8 75 0 0 0
3 D 1731 3 150 96 42 0
4 E 2693 731 0 0 0 0
5 F 2963 189 0 51 42 0
6 G 3379 9 0 0 42 1
