gpt4 book ai didi

python - 如何基于两个或多个其他变量创建 Pandas 数据框变量/列?

转载 作者:行者123 更新时间:2023-11-28 18:29:06 27 4
gpt4 key购买 nike

我有一个 Pandas 数据框,例如:

Col1 Col2
A 1
B 2
C 3

我了解如何根据 Col2 的值创建 Col3:

df['Col3'] = (df['Col2'] <= 1).astype(int)

但是......如果新列基于两个变量,如(此处为伪代码):

if Col2=1 and Col3=1 then Col4='X'
else if Col2=1 and Col3=2 then Col4='Y'
else Col4='Z'

如何实现?非常感谢

最佳答案

你可以试试双numpy.where :

df['Col4'] = np.where((df['Col2'] == 1) & (df['Col3'] == 1), 'X', 
np.where((df['Col2'] == 1) & (df['Col3'] == 2), 'Y', 'Z'))

示例:

import pandas as pd

df = pd.DataFrame({'Col2': {0: 1, 1: 1, 2: 3},
'Col1': {0: 'A', 1: 'B', 2: 'C'},
'Col3': {0: 1, 1: 2, 2: 4}})
print (df)

Col1 Col2 Col3
0 A 1 1
1 B 1 2
2 C 3 4

df['Col4'] = np.where( (df['Col2'] == 1) & (df['Col3'] == 1), 'X',
np.where((df['Col2'] == 1) & (df['Col3'] == 2), 'Y', 'Z'))

print (df)
Col1 Col2 Col3 Col4
0 A 1 1 X
1 B 1 2 Y
2 C 3 4 Z

另一种解决方案 locfillna用于填充 NaN 所有其他值:

df.loc[ (df['Col2'] == 1) & (df['Col3'] == 1) , 'Col4'] =  'X'
df.loc[ (df['Col2'] == 1) & (df['Col3'] == 2) , 'Col4'] = 'Y'
df['Col4'] = df['Col4'].fillna('Z')

print (df)
Col1 Col2 Col3 Col4
0 A 1 1 X
1 B 1 2 Y
2 C 3 4 Z

关于python - 如何基于两个或多个其他变量创建 Pandas 数据框变量/列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978461/

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