Ich habe einen Datenrahmen, der wie folgt aussieht:Finde äquivalente Reihen in Pandas?
df = pd.DataFrame([
{'code': '0101010C0AAAAAA', 'chemical': '0101010C0', 'is_generic': True, 'format': 'AAAA'},
{'code': '0101010C0BBAAAA', 'chemical': '0101010C0', 'is_generic': False, 'format': 'AAAA'},
{'code': '0101010F0AAAUAU', 'chemical': '0101010F0', 'is_generic': True, 'format': 'AUAU'},
{'code': '0101010F0BCAAAU', 'chemical': '0101010F0', 'is_generic': False, 'format': 'AAAU'},
{'code': '0101010G0AAABAB', 'chemical': '0101010G0', 'is_generic': False, 'format': 'ABAB'}
])
code chemical is_generic format
0 0101010C0AAAAAA 0101010C0 True AAAA
1 0101010C0BBAAAA 0101010C0 False AAAA
2 0101010F0AAAUAU 0101010F0 True AUAU
3 0101010F0BCAAAU 0101010F0 False AAAU
4 0101010G0AAABAB 0101010G0 False ABAB
Ich mag würde einen neuen Datenrahmen mit einer Zeile für jeden Code erstellen, in den is_generic
falsch ist. Dann würde Ich mag eine Spalte hinzuzufügen, die für jeden Code ist der Code mit dem gleichen chemischen und Format, für die aber is_generic ist True:
code generic_equiv
0101010C0BBAAAA 0101010C0AAAAAA
0101010F0BCAAAU 0101010F0AAAUAU
0101010G0AAABAB None
Ich weiß, wie für jeden den Datenrahmen mit einer Reihe zu bekommen Code wo is_generic
ist falsch:
df1 = df[df['is_generic'] == True]
ich glaube, ich möchte eine bedingte merge mit df zu tun, aber, wie dies zu tun? Hier
Gibt es höchstens eine generic = True Zeile jede Anpassung sein garantiert insbesondere generisch = Falsche Zeile? Oder könnte es mehrere Generika für ein Nicht-Generikum geben? Wenn es mehrere geben könnte, wie würde die Ausgabe aussehen? –
@JohnZwinck danke! Ja, es gibt höchstens eins. – Richard