Création d'une colonne dans une trame de données basée sur les entrées d'autres colonnes

Jonathan

Je voudrais créer une nouvelle colonne sur le df ci-dessous, qui renvoie 1 une fois C> 55 jours. Chaque ligne suivante afficherait également 1, même si C <55 jours maximum jusqu'à C <20 jours bas. Comment ferais-je cela? Merci d'avance

df = pd.DataFrame([
    ['2020-01-01 01:01:00', 7147.69, 7163.32, 7147.69],
    ['2020-01-01 01:02:00', 7158.31, 7163.32, 7147.69],
    ['2020-01-01 01:03:00', 7157.08, 7163.32, 7147.69],
    ['2020-01-01 01:04:00', 7157.01, 7163.32, 7147.69],
    ['2020-01-01 01:05:00', 7159.85, 7163.32, 7147.69],
    ['2020-01-01 01:06:00', 7161.29, 7163.32, 7147.69],
    ['2020-01-01 01:07:00', 7161.29, 7163.32, 7147.69],
    ['2020-01-01 01:08:00', 7161.28, 7162.03, 7147.69],
    ['2020-01-01 01:09:00', 7161.29, 7162.03, 7147.69],
], columns=['date', 'C', '55 day high', '20 day low'])

Trame de données:

                               C  55 day high  20 day low
date                                                 
2020-01-01 01:01:00  7147.69      7163.32     7147.69
2020-01-01 01:02:00  7158.31      7163.32     7147.69
2020-01-01 01:03:00  7157.08      7163.32     7147.69
2020-01-01 01:04:00  7157.01      7163.32     7147.69
2020-01-01 01:05:00  7159.85      7163.32     7147.69
2020-01-01 01:06:00  7161.29      7163.32     7147.69
2020-01-01 01:07:00  7161.29      7163.32     7147.69
2020-01-01 01:08:00  7161.28      7162.03     7147.69
2020-01-01 01:09:00  7161.29      7162.03     7147.69
Matt L.

Je ne peux pas penser à un moyen de le faire apply(), mais vous pouvez utiliser iterrows()pour parcourir les lignes avec des conditions, générer une liste de résultats, puis en faire une nouvelle colonne de dataframe. Notez que j'ai modifié les données du cours pour simuler les conditions de départ et d'arrêt que vous décrivez:

import pandas as pd 
df = pd.DataFrame([
    ['2020-01-01 01:01:00', 7147.69, 7163.32, 7147.69],
    ['2020-01-01 01:02:00', 7158.31, 7163.32, 7147.69],
    ['2020-01-01 01:03:00', 7164.08, 7163.32, 7147.69],
    ['2020-01-01 01:04:00', 7157.01, 7163.32, 7147.69],
    ['2020-01-01 01:05:00', 7159.85, 7163.32, 7147.69],
    ['2020-01-01 01:06:00', 7161.29, 7163.32, 7147.69],
    ['2020-01-01 01:07:00', 7161.29, 7163.32, 7147.69],
    ['2020-01-01 01:08:00', 7145.28, 7162.03, 7147.69],
    ['2020-01-01 01:09:00', 7161.29, 7162.03, 7147.69],
], columns=['date', 'C', '55 day high', '20 day low'])

new_col = []
state = 0
for row in df.iterrows():
    if row[1]['C'] > row[1]['55 day high']:
        state = 1
    if row[1]['C'] < row[1]['20 day low']:
        state = 0
    new_col.append(state)

df['result'] = new_col
df

date    C   55 day high 20 day low  result
0   2020-01-01 01:01:00 7147.69 7163.32 7147.69 0
1   2020-01-01 01:02:00 7158.31 7163.32 7147.69 0
2   2020-01-01 01:03:00 7164.08 7163.32 7147.69 1
3   2020-01-01 01:04:00 7157.01 7163.32 7147.69 1
4   2020-01-01 01:05:00 7159.85 7163.32 7147.69 1
5   2020-01-01 01:06:00 7161.29 7163.32 7147.69 1
6   2020-01-01 01:07:00 7161.29 7163.32 7147.69 1
7   2020-01-01 01:08:00 7145.28 7162.03 7147.69 0
8   2020-01-01 01:09:00 7161.29 7162.03 7147.69 0

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Création d'une nouvelle colonne dans une trame de données basée sur une colonne d'une autre trame de données

Mise à jour d'une colonne dans une trame de données basée sur plusieurs colonnes

Création d'une colonne de liste dans une trame de données basée sur des valeurs dans une autre trame de données

Remodeler les données dans R - Création de nouvelles colonnes basées sur les valeurs d'une colonne existante

Création d'une colonne basée sur les valeurs d'une autre colonne dans un bloc de données

Création d'une nouvelle colonne basée sur les valeurs de plage fournies dans une autre trame de données

création d'une nouvelle colonne basée sur les valeurs de 2 autres blocs de données

Créer une nouvelle colonne basée sur d'autres colonnes dans des cadres de données existants

Ajout d'une colonne basée sur les données d'autres colonnes

Création d'une nouvelle colonne basée sur les valeurs d'autres colonnes dans Python Pandas

Création d'une nouvelle colonne dans une base de données basée sur les valeurs d'une autre colonne dans les pandas

création d'une nouvelle colonne basée sur la condition d'autres colonnes dans R

Création d'une nouvelle colonne basée sur les conditions des autres colonnes

Création de nouvelles colonnes dans le cadre de données qui seront basées sur des conditions et sur les valeurs d'une autre colonne

Création d'un nouveau Spark DataFrame avec une nouvelle valeur de colonne basée sur la colonne dans la première trame de données Java

ajouter une colonne basée sur des valeurs dans le cadre de données d'autres colonnes

Pandas création conditionnelle d'une colonne de trame de données: basée sur plusieurs conditions

Pandas création conditionnelle d'une colonne de trame de données: basée sur plusieurs conditions max

Ajout d'une colonne basée sur un index à une trame de données dans Pandas

Boucle sur une trame de données qui génère une sortie basée sur les conditions et les valeurs d'autres colonnes

Remplir la colonne dans une trame de données A en fonction d'une plage donnée par deux autres colonnes dans la trame de données B

R - Remplissage de la colonne du cadre de données avec les valeurs d'autres colonnes basées sur une chaîne dans une autre colonne

Création d'une colonne pandas conditionnelle à d'autres valeurs de colonnes basées sur un dictionnaire

fréquence des mots dans une liste basée sur les données d'autres colonnes

Créer une nouvelle colonne basée sur les valeurs NA dans d'autres colonnes

Création d'une base de données basée sur les services dans Visual Studio

Création d'une nouvelle colonne cumulative dans un bloc de données basé sur des colonnes existantes

Comment créer une nouvelle colonne basée sur les parties supérieure et inférieure d'une seule trame de données dans PANDAS?

Découpage basé sur une plage de colonnes dans une trame de données de colonne multi-index

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive