C'est la question que j'ai posée avant, mais je l'ai expliqué dans le mauvais sens, donc je vais ouvrir une nouvelle question.Appréciez votre aide et le temps!Rowwise dans Pandas
des données d'entrée:
df=pd.DataFrame({'variable':["A","A","B","B","C","D","E","E","E","F","F","G"],'weight':[2,2,0,0,1,3,3,1,5,0,0,4]})
df
Out[447]:
variable weight
0 A 2
1 A 2
2 B 0
3 B 0
4 C 1
5 D 3
6 E 3
7 E 1# If value more than 2 , out put should be 0
8 E 5
9 F 0
10 F 0
11 G 4
Résultats escomptés:
df
Out[449]:
variable weight NEW
0 A 2 1
1 A 2 1
2 B 0 1
3 B 0 1
4 C 1 1
5 D 3 ERROR
6 E 3 ERROR
7 E 1 1
8 E 5 1
9 F 0 1
10 F 0 1
11 G 4 ERROR
Mon approche dès maintenant (laid ..):
l1=[]
for i in df.variable.unique():
temp=df.loc[df.variable==i]
l2 = []
for j in range(len(temp)):
print(i,j)
if temp.iloc[j,1]<=2 :
l2.append(1)
elif temp.iloc[j,1]>2 and j==0:
l2.append('ERROR')
elif temp.iloc[j,1]>2 and j > 0 :
if l2[j - 1] == 1:
l2.append(1)
else:
l2.append(0)
print(l2)
l1.extend(l2)
df['NEW']=l1
Ma question ici:
1er. Si je veux utiliser groupby
, comment puis-je faire un résultat par calcul impliqué dans le calcul futur, afin d'obtenir la colonne NEW
ici.
2ème. Y at-il une fonction pandas
comme .Last.value
dans R
?
Je vais vous expliquer la situation ici:
1. Si la valeur de poids inférieur à 2 doit toujours être 1
2.Dans la première valeur de poids supérieur à 2, il devrait être retour ERROR
3. Si la précédente obtenir « erreur » et la valeur de poids actuelle est rangée plus de 2, il retournera 0
et bien voulu ch ange l'entrée:
df=pd.DataFrame({'variable':["A","A","B","B","C","D","E","E","E","F","F","G"],'weight':[2,2,0,0,1,3,3,9,5,0,0,4]})
auriez-vous l'expliquer la logique derrière « ERREUR » valeurs? – MaxU
@MaxU La première valeur de chaque groupe sera 'ERROR' ou '1' – Wen
Je ne comprends toujours pas quand il devrait être' ERROR', quand '1' et quand' 0' ... – MaxU