Προς το περιεχόμενο

Ανάπτυξη στηλων σε Python Dataframe


masteripper

Προτεινόμενες αναρτήσεις

γεια χαρα

Έχω 1 πρόβλημα της παρακάτω μορφής . Έχουμε 2 στήλες

 Χ Υ <--- Κεφαλίδα

Α Α

Β Β

Α Β

Β Α

Τωρα το θέμα είναι ότι χρειάζομαι να κάνω 1 permutation ώστε να πάρω όλες τις παραγόμενες στήλες στις οποίες εαν Χ = Υ τότε απλώς επαναλαμβάνεται ειδάλλως γίνεται ανάπτυξη: δλδ

Χ Υ Ζ W

Α Α Α A

Β Β Β B

Α Α Β B

Β A B A

Καμμιά ιδέα ?

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 λεπτό πριν, DrKo είπε

Θα πρέπει να το πας είτε μέσω `numpy`, χρησιμοποιώντας itertools (ή παρόμοιο package) ή να κάνεις `Multindexing` στο `DataFrame` σου

To multindex δεν το γνώριζα αλλα το Itertools κάνει ανάπτυξη όπως όλα vertically...εγω θέλω horizontally

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

15 λεπτά πριν, masteripper είπε

όλα vertically...εγω θέλω horizontally

Μπορείς να το σπάσεις σε horizontal. Εφόσον είναι permutations, κάθε "vertical ομάδα" θα έχει ίδιο αριθμό από entries. Τα αναπτύσεις/κάνεις-reshape σε horizontal και μετά αφαιρείς ό,τι δεν χρειάζεσαι (για να μην χαλάσεις τον ίδιο αριθμό κάθε "vertical ομάδας" ). 

 

Υ. Γ. Αν και τώρα που το ξαναβλέπω, δεν χρειάζεσαι να αφαιρέσεις τίποτα. Απλά θα κάνεις ένα reshape. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, masteripper είπε

Τωρα το θέμα είναι ότι χρειάζομαι να κάνω 1 permutation ώστε να πάρω όλες τις παραγόμενες στήλες στις οποίες εαν Χ = Υ τότε απλώς επαναλαμβάνεται ειδάλλως γίνεται ανάπτυξη: δλδ

Χ Υ Ζ W

Α Α Α A

Β Β Β B

Α Α Β B

Β A B A

Καμμιά ιδέα ?

Μπορεις να διευκρινισεις λιγο περισσοτερο πως ακριβως δουλευει αυτη η συνθηκη; 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
16 λεπτά πριν, archer100 είπε

Μπορεις να διευκρινισεις λιγο περισσοτερο πως ακριβως δουλευει αυτη η συνθηκη; 

Κοίτα ας πούμε ότι όλα αυτά αντιπροσωπεύουν συνθήκες του τύπου ΕΑΝ Χ και Υ είναι ίδια τότε εγώ θα θεωρήσω ότι η τιμή που παρέχεται είναι σωστή και θα εκλάβω ότι αυτή είναι η σωστή (και κάπου εδώ θα τελείωνε η υπόθεση καθώς εγώ θα είχα μια μοναδική τιμή)

ΕΑΝ όμως X <> Y τότε θέλω όλες τις προηγούμενες τιμές (και τις επόμενες) "καλές" τιμές και μια ανάπτυξη που θα ικανοποιεί όλες τις περιπτώσεις.

Χ Υ

Α Α  <-- Α Τιμή

Β Β  <-- Β Τιμή

Α Β  <-- Τώρα έχω μια κατάσταση Α ή Β

Β Α  <-- Ομοια έχω μια κατάσταση Α ή Β

Τώρα με την παρακάτω ανάπτυξη παίρνω όλες τις δυνατές τιμές 

Χ Υ Ζ W

Α Α Α A   <- Η τιμη είναι Α

Β Β Β B  <-  Η τιμη είναι Β

Α Α Β B  <-| 

                  |--> ανάπτυξη

Β A B A <-|

ή καλύτερα

Α

Β

Α ή Β (OR)

Α ή Β (OR)

Όλα αυτά είναι εντελώς δυναμικά καθώς μπορεί να έχω n γραμμές με κ OR οπότε η ανάπτυξη μπορεί να πάει στον θεό.

 

Επεξ/σία από masteripper
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

4 λεπτά πριν, masteripper είπε

Κοίτα ας πούμε ότι όλα αυτά αντιπροσωπεύουν συνθήκες του τύπου ΕΑΝ Χ και Υ είναι ίδια τότε εγώ θα θεωρήσω ότι η τιμή που παρέχεται είναι σωστή και θα εκλάβω ότι αυτή είναι η σωστή (και κάπου εδώ θα τελείωνε η υπόθεση καθώς εγώ θα είχα μια μοναδική τιμή)

ΕΑΝ όμως X <> Y τότε θέλω όλες τις προηγούμενες τιμές (και τις επόμενες) "καλές" τιμές και μια ανάπτυξη που θα ικανοποιεί όλες τις περιπτώσεις.

Χ Υ

Α Α  <-- Α Τιμή

Β Β  <-- Β Τιμή

Α Β  <-- Τώρα έχω μια κατάσταση Α ή Β

Β Α  <-- Ομοια έχω μια κατάσταση Α ή Β

Τώρα με την παρακάτω ανάπτυξη παίρνω όλες τις δυνατές τιμές 

Χ Υ Ζ W

Α Α Α A   <- Η τιμη είναι Α

Β Β Β B  <-  Η τιμη είναι Β

Α Α Β B  <-| 

                  |--> ανάπτυξη

Β A B A <-|

ή καλύτερα

Α

Β

Α ή Β (OR)

Α ή Β (OR)

Όλα αυτά είναι εντελώς δυναμικά καθώς μπορεί να έχω n γραμμές με κ OR οπότε η ανάπτυξη μπορεί να πάει στον θεό

 

Thanks. Μπορεις να μεταφρασεις την περιπτωση που ειναι διαφορετικα σε συνθηκες dataframe περιγραφικα; 

Πχ Εαν X[i] == Y[i] == Α θέλω Ζ[i] = Α και W[i] = Α (η απλη περιπτωση)

Ειδαλλως; Θελουμε τοσες νεες γραμμες ωστε να περιλαμβανονται ολα τα permutations?

πχ Εαν X[i] = Α  και Y[i] = Β τοτε τι θελουμε ως Ζ[i] και W[i] στην υπαρχουσα η/και στις επομενες γραμμες;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

11 λεπτά πριν, archer100 είπε

πχ Εαν X[i] = Α  και Y[i] = Β τοτε τι θελουμε ως Ζ[i] και W[i] στην υπαρχουσα η/και στις επομενες γραμμες;

Για κάθε περίπτωση θα έχουμε την ανάπτυξη του

1 Or ---> 2 Στήλες

2 Or --> 4 Στήλες

3 Or --> 8 Στήλες

Εαν η μνήμη μου δεν γελάει έχουμε γεωμετρική πρόοδο του 2 (OR 2 τιμές)

για να το γράψω και λίγο ακόμα πιο περιγραφικά

 

Χ Υ

Α Α  <-- Α Τιμή

Β Β  <-- Β Τιμή

Α Β  <-- Τώρα έχω μια κατάσταση Α ή Β

Β Α <-- Τώρα έχω μια κατάσταση Α ή Β

Β Β  <-- Β Τιμή

Β Β  <-- Β Τιμή

Α Α <-- Α Τιμή

οπότε το παραχθεν

Χ Υ Ζ W

Α Α Α A

Β Β Β B

Α Α Β B

Β A B A

Β Β Β Β

Β Β Β Β

Α Α Α Α

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό που βλέπω είναι ότι δεν σου χρειάζονται τα extra columns. Εάν έχεις μόνο δύο outcomes, τότε μπορείς να κάνεις split το DataFrame σε δύο ομάδες: α) τα rows που και τα δυο columns είναι τα ίδια, β) τα rows όπου τα δύο columns είναι διαφορετικά.

Εάν παρατηρήσεις, σε όλα τα παραδείγματά σου, το X == Z και το Y == W. Οπότε, γιατί να τα κάνεις duplicate; 

@masteripper

Μπορείς να δώσεις ένα παράδειγμα όπου δεν θα γίνει duplicate των αρχικών X και Y;

Επίσης, τι ακριβώς εννοείς με το "ανάπτυξη"; Μπορείς να δώσεις ένα παράδειγμα;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
41 λεπτά πριν, DrKo είπε

Αυτό που βλέπω είναι ότι δεν σου χρειάζονται τα extra columns. Εάν έχεις μόνο δύο outcomes, τότε μπορείς να κάνεις split το DataFrame σε δύο ομάδες: α) τα rows που και τα δυο columns είναι τα ίδια, β) τα rows όπου τα δύο columns είναι διαφορετικά.

Εάν παρατηρήσεις, σε όλα τα παραδείγματά σου, το X == Z και το Y == W. Οπότε, γιατί να τα κάνεις duplicate; 

@masteripper

Μπορείς να δώσεις ένα παράδειγμα όπου δεν θα γίνει duplicate των αρχικών X και Y;

Επίσης, τι ακριβώς εννοείς με το "ανάπτυξη"; Μπορείς να δώσεις ένα παράδειγμα;

Σε μπερδεύει ότι είναι μόνο 2 OR ας κάνω με 3

Χ Υ <--- Κεφαλίδα

Α Α

Β Β

Α Β

Β Α

Β Β

Α Β

Α Α

Οπότε θα γίνει 

Χ Υ Ζ W K L M N

Α Α Α A Α Α Α A

Β Β Β B Β Β Β B

Α A Α A B Β Α B

A Β B Α Β A Α B

Β Β Β Β Β Β Β Β

Α Α B B Β B A A

Α Α Α Α Α Α Α Α

 

και φιλτραρισμένα όλοι οι πιθανοί συνδυασμοί για 3 OR

Α A Α A B Β B B

A Β B Α Β A Α B

Α Α B B Β B A A

(A,A,A), (A,B,A),(A,B,B),(A,A,B),(B,B,B),(B,A,B),(B,A,A),(B,B,A)

 

Επίσης όσον αφορά περίπτωση που δεν έχουμε duplicate

Χ Υ <--- Κεφαλίδα

Α Α

Β Β

A A

A A

Σε όλες τις περιπτώσεις έχω Χi = Yi οπότε τελικά εγώ θα πω (επιλογές)

1η -->Α

2η -->Β

3η -->Α

4η -->Α  ... κ.ο.κ

Επεξ/σία από masteripper
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

γιατί μπλέκεις με or? επαναληπτικές διατάξεις 2 στοιχείων είναι,  εφόσον είναι 2, έχουμε επαναληπτικές διατάξεις 2 ανά κ=1, κ=2, κ=3, οι επαναληπτικές διατάξεις δίνονται από το n^k , άρα είναι 2^1, 2^2, 2^3 κτλ. .Δεν ξέρω αν υπάρχουν βιβλιοθήκες συνδυαστικής  στην python αλλά αν δεν παίζει φτιάξε μια συνάρτηση που υπολογίζει τος διατάξεις και μετά πολλαπλασίασε τα σαν διανύσματα. (καρτεσιανό γινόμενο, αυτό πιστεύω θα το κάνει κάποια βιβλιοθήκη της python).

Επεξ/σία από Ussr
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το προβλημα δεν ειναι ακομη ξεκαθαρο. Μπορεις να το παρουσιασεις με πιο απλες δομες, πχ λιστες; 

Δηλαδη εχω input αυτο και θελω output αυτο και τα διαφορετικα σεναρια

Σε καθε περιπτωση το εργαλειο που θα χρειαστεις ειναι το itertools.permutations αν σε ενδιαφερει η διαταξη των στοιχειων και το itertools.combinations αν σε ενδιαφερει μονο ο συνδυασμος χωρις να εχει σημασια η διαταξη

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, masteripper είπε

Σε μπερδεύει ότι είναι μόνο 2 OR ας κάνω με 3

Χ Υ <--- Κεφαλίδα

Α Α

Β Β

Α Β

Β Α

Β Β

Α Β

Α Α

Οπότε θα γίνει 

Χ Υ Ζ W K L M N

Α Α Α A Α Α Α A

Β Β Β B Β Β Β B

Α A Α A B Β Α B

A Β B Α Β A Α B

Β Β Β Β Β Β Β Β

Α Α B B Β B A A

Α Α Α Α Α Α Α Α

 

και φιλτραρισμένα όλοι οι πιθανοί συνδυασμοί για 3 OR

Α A Α A B Β B B

A Β B Α Β A Α B

Α Α B B Β B A A

(A,A,A), (A,B,A),(A,B,B),(A,A,B),(B,B,B),(B,A,B),(B,A,A),(B,B,A)

 

Επίσης όσον αφορά περίπτωση που δεν έχουμε duplicate

Χ Υ <--- Κεφαλίδα

Α Α

Β Β

A A

A A

Σε όλες τις περιπτώσεις έχω Χi = Yi οπότε τελικά εγώ θα πω (επιλογές)

1η -->Α

2η -->Β

3η -->Α

4η -->Α  ... κ.ο.κ

Έχεις όμως δύο τιμές, οι οποίες είναι στο Χ και Υ. 

Προσωπική μου γνώμη είναι ότι έχεις πέσει σε XY πρόβλημα και δεν μπορείς να το δεις καθαρά τώρα. Όπως το βλέπω εγώ, δεν χρειάζεται να κάνεις αυτό που λες. Μπορείς κάλλιστα να το υπολογίζεις on-the-fly με το itertools. Εάν θέλεις να το αποθηκεύσεις, μπορείς να υπολογίσεις τα πάντα και να τα κάνεις μετά DataFrame. 

Εάν θέλεις να το κάνεις one liner, κάνε το πρώτα με πολλές γραμμές και μετά το κάνεις μία γραμμή. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...