df = pd.DataFrame(np.array([[[1740, 6920, 10120, 14300, 18220, 24500, 41300], 10000, 20000], [[1620, 5840, 12100, 15000, 25260, 26020], 5900, 15200]]),
columns=['long_list', 'min', 'max'])
Pour ce dataframe, j'espère créer une nouvelle colonne df ['part'] qui est la partie de df ['long_list'] qui remplit la condition de df ['min'] <df ['part'] <df ['max']. J'ai essayé d'utiliser une fonction lambda mais j'ai eu du mal à utiliser les trois colonnes. Donc, la sortie serait
df2=pd.DataFrame(np.array([[[1740, 6920, 10120, 14300, 18220, 24500, 41300], 10000, 20000, [10120, 14300, 18220]], [[1620, 5840, 12100, 15000, 25260, 26020], 5900, 15200,[12100, 15000]]]),
columns=['long_list', 'min', 'max','part'])
import pandas as pd
Vous pouvez créer cette nouvelle colonne en utilisant apply () et une compréhension de liste conditionnelle :
df2['part']=df2.apply(lambda row:
[each for each in row['long_list']
if each>row['min'] and each<row['max']],axis=1)
Si vous voulez vraiment que le résultat soit une trame de données différente, alors:
df2=df
df2['part']=df2.apply(lambda row:
[each for each in row['long_list']
if each>row['min'] and each<row['max']],axis=1)
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots