J'ai un fichier de données similaire ci-dessous < img src = "https://i.stack.imgur.com/ulbji.png" alt = "Entrez la description de l'image ici"> p> comme indiqué dans ma capture d'écran ci-dessus, ma source de données sourde ( quand je fais Je voudrais déposer des enregistrements uniquement lorsque les deux valeurs ( Veuillez noter que j'ai Seuls quelques colonnes ici et mes données réelles ont plus de 150 colonnes et les noms de colonne ne sont pas connus à l'avance. P> Je pense que ma sortie soit comme indiqué ci-dessous df2 code>) contient peu de na / p> df2.stack () code>, je perds tous les NA des données. P> < p> Cependant, je voudrais conserver NA pour h7_date code> et H8 code> car ils ont leur paire de valeur / date correspondante. Pour h7_date code>, j'ai une valeur valide h7 code> et pour h8 code>, j'ai obtenu son correspondant h8_date code>. p> h5_date code>, h5 code>) sont na. p> H5_date code>, h5 code> bien qu'ils soient na / forts> p> p>
3 Réponses :
Vous pouvez utiliser: p>
col = [x pour x dans df.columns si "date" dans x]
Pour la colonne en col:
df.dropna (sous-ensemble = [colonne, colonne [: - 4]], comment = 'tout', surplacée = true) code> p>
sous-ensemble code> Sélectionnez les lignes dans lesquelles le Na est détecté, comment code> spécifie les conditions de la ligne (ici toutes les 2 lignes doivent être Na) et surplace code> modifie le Dataframe actuel P>
Dans ce cas, vous avez donné des noms de colonnes. Mais je ne connais peut-être pas les noms de colonne. Comment tomber dans ce cas? Il y a plus de 150 colonnes et les données ne sont pas disponibles. Donc je ne connais pas vraiment les noms de colonne
Connaissez-vous leur index?
Non je n'ai pas. L'échantillon DF en question comporte 8 à 15 colonnes, mais en temps réel, ils pourraient avoir plus de 150 colonnes. C'est comme des données de la série chronologique. Chaque jour a une mesure. Certaines dates peuvent ne pas avoir de mesure et certaines mesures peuvent ne pas avoir la date correspondante.
@Avles Faites les colonnes à la suite d'une convention de dénomination, par exemple: y a-t-il toujours H? et h? _Date paires?
@Alves Comment choisissez-vous la colonne que vous souhaitez déposer le NA à partir de là?
@Jon Clements hmmm oui et non je dirais. Actuellement son de ce format qui est h? et h? _Date (c'est pour la mesure de la fréquence cardiaque). Mais lorsque les données sont pour la mesure du cholestrol (LCHOL? et L? chol_date). Ce que j'essaie de dire, c'est que nous pouvons trouver les mots-clés date / date code> dans la colonne et le numéro de jour comme 1,2,3,4 (H1, H2, H3, H4), mais les alphasbets pourraient changer de h à lchol ou bp, etc.
@MAYEULSGC - Lorsque les deux colonnes sont Na, je veux dire dans ce cas H5Date code> et H5 code> sont les deux na's, afin que nous puissions les laisser tomber. Tandis que h7 code> n'est pas na, donc nous retenons h7date code>. Similaire pour h8 code> et h8date code>
Très bien, alors vous voulez laisser tomber toutes les rangées pour lesquelles il y a un couple (hx; hxdate) entièrement na?
Oui. Mais veuillez noter que le nom de la colonne présenté ici est un échantillon. Comme indiqué dans le commentaire ci-dessus, il peut avoir n'importe quel nom de colonne, mais il contient non le mot clé date code> et le numéro de jour comme 1 code>, 2 code> etc. peut être comme H1Date, H1 ou L1Choldate, L1CHOL ou BP1Date, BP ou UACR1Date, UACR1
J'ai édité ma solution, mais je ne pense pas que ce sera le plus efficace
Laissez-nous Continuez cette discussion en chat .
Désolé ne peut pas l'utiliser, pare-feu de la société
Quelle est la colonne [-4]? Parce que la solution ne peut fonctionner que ce Dataframe. Je veux dire ici H5Date est 4 la colonne. Donc je suppose que vous avez utilisé cela
Sortez la «date» hors du nom de la colonne, en supposant que la date est dans la dernière position. Si ce n'est pas je ne vous laisse pas modifier la chaîne pour prendre la "date". Date "et obtenir le nom de la deuxième colonne
Ne devrait-il pas être : 2 code>. Votre code entraîne une erreur, mais lorsque j'utilise ci-dessous, il renvoie un fichier de données vide pour la colonne dans Col: Imprimer (colonne) Imprimer (Colonne [: 2]) DF2.Dropna (sous-ensemble = [Colonne, colonne [: 2]], comment = 'Tout', surplacez = vrai)
Avez-vous appliqué cela à la Dataframe que j'ai partagée ci-dessus? Il se traduit par un fichier de données vide. Je ne sais pas si j'ai raté quelque chose. Dans tous les cas, je suppose que cela devrait être [: - 5] code>
Je me suis basé sur l'exemple que vous avez donné dans le commentaire à l'aide de H5Date, pas de H5_Date, s'il y a des traits de soulignement, alors oui, sortez-le avec [: -5]
Je suppose qu'il y a eu une certaine confusion avec la façon dont j'ai aménagé des choses. Juste pour être clair, je ne souhaite pas laisser tomber l'enregistrement complet. Je souhaite seulement laisser tomber ces deux colonnes. F2.Dropna (sous-ensemble = ['H5_Date', 'H5'], comment = 'All'], surplacée = vrai), cette approche peut ne pas fonctionner
Malentendu En effet, donc si sur aucune ligne, vous avez un couple (x, x_date) qui ont les deux valeurs na, vous laissez tomber le couple de colonnes pour tout le Dataframe, ai-je raison?
Je veux dire pas pour l'ensemble de la Dataframe mais pour cette personne_id
Si cela fonctionne pour vous oui, c'est probablement la solution la plus élégante
Essayez PD.Dataframe.melt code>
Non ça n'aide pas. Je souhaite retenir quelques na et déposer le reste de la NA
Sûr. En attente de voir votre réponse aussi
sur approche consiste à fondre le DF, appliquez une clé qui identifie les colonnes du même "groupe" (dans ce cas à partir de: p> Utilisation: p> qui vous donne: p> Vous pouvez ensuite l'utiliser comme point de départ pour modifier si nécessaire. P> p> h
Je comprends que tout () retournera vrai lorsque l'un des éléments est vrai. J'envisage des valeurs valides (autre autre que Na) comme vrai code> ici. Suis-je raison de comprendre que lorsque je remplace . Nany () code> avec .All () code> dans votre code, je ne devrais voir aucun des na. Il devrait donc exclure le nombre record de 12,13,14,15. Mais je les vois. Ai-je t-il mal?
df2.stack (Drowna = False) code>?Désolé, cela ne fonctionne pas. Je veux dire qu'il conserve toujours Na pour H5Date, H5 aussi et ils sont affichés. Je veux laisser tomber ces archives
Les réponses avec
Fontair CODE> Travaux d'approche, mais pour la réponse de @jon Clements, je suis peu claire sur.All code> et. Nan code> approche. Donc, je marque @Tawab_shakeEl réponse en solution. Il suffit d'être clair que c'est en raison de ma maîtrise limitée avec Python, je ne pouvais pas comprendre la différence entre la différence entre .Trans et. Néanmoins, les deux réponses donnent la production attendue