ich Pandas Datenrahmen wie folgt haben:Pandas Datenrahmen: Spaltenwert verwenden Zeichenfolge in einer anderen Spalte zu schneiden
col1 col2 col3
0 1 3 ABCDEFG
1 1 5 HIJKLMNO
2 1 2 PQRSTUV
Ich möchte eine weitere Spalte hinzufügen, die eine Teil von col3
von Position in col1
sein sollte wie angegeben Position wie in col2
angegeben. So etwas wie col3[(col1-1):(col2-1)]
, die sich ergeben, sollten in:
col1 col2 col3 new_col
0 1 3 ABCDEFG ABC
1 1 5 HIJKLMNO HIJK
2 1 2 PQRSTUV PQ
ich mit der versucht folgende:
my_df['new_col'] = my_df.col3.str.slice(my_df['col1']-1, my_df['col2']-1)
und
my_df['new_col'] = data['col3'].str[(my_df['col1']-1):(my_df['col2']-1)]
beide Ergebnisse in einer Spalte von NaN
, während, wenn ich Fügen Sie zwei Zahlenwerte ein (zB data['col3'].str[1:3]
) es funktioniert gut. Ich habe überprüft und die Typen sind korrekt (int64, int64 und Objekt). Auch außerhalb eines solchen Kontextes (z. B. mit einer for-Schleife) kann ich den Job erledigen, aber ich bevorzuge einen einzelnen Liner, der den DataFrame ausnutzt. Was mache ich falsch?
Es funktionierte perfekt. Vielen Dank! –
Froh kann helfen! Schöner Tag! – jezrael