Criei o seguinte dataframe do pandas:
ds = {'col1':[1,2,2,3,4,5,5,6,7,8]}
df = pd.DataFrame(data=ds)
O dataframe se parece com isto:
print(df)
col1
0 1
1 2
2 2
3 3
4 4
5 5
6 5
7 6
8 7
9 8
Criei então um novo campo, chamado newCol
, que foi definido da seguinte forma:
def criteria(row):
if((row['col1'] > 0) & (row['col1'] <= 2)):
return "A"
elif((row['col1'] > 2) & (row['col1'] <= 3)):
return "B"
else:
return "C"
df['newCol'] = df.apply(criteria, axis=1)
O novo dataframe se parece com isto:
print(df)
col1 newCol
0 1 A
1 2 A
2 2 A
3 3 B
4 4 C
5 5 C
6 5 C
7 6 C
8 7 C
9 8 C
Existe a possibilidade de criar um dicionário como este:
dict = {
'0 <= 2' : "A",
'2 <= 3' : "B",
'Else' : "C"
}
E então aplique-o ao dataframe:
df['newCol'] = df['col1'].map(dict)
?
Alguém pode me ajudar, por favor?
Sim, você pode fazer isso com
IntervalIndex
:Mas dado o seu exemplo, parece mais simples seguir com
cut
:Saída:
Se você insistir no formato original do seu dicionário, você pode converter usando: