Ihr Code würde Fehler, wie Sie fälschlicherweise den Datenrahmen zu schaffen, nur eine einzige Spalte erstellen A
dann B
hinzufügen, basierend auf A
:
import pandas as pd
df = pd.DataFrame(["BULL","BEAR","BULL"], columns=['A'])
df["B"] = ["Long" if ele == "BULL" else "Short" for ele in df["A"]]
print(df)
A B
0 BULL Long
1 BEAR Short
2 BULL Long
Oder haben Ihnen Logik mit den Daten, bevor Sie den Datenrahmen zu erstellen:
import pandas as pd
data = ["BULL","BEAR","BULL"]
data2 = ["Long" if ele == "BULL" else "Short" for ele in data]
df = pd.DataFrame(list(zip(data, data2)), columns=['A','B'])
print(df)
A B
0 BULL Long
1 BEAR Short
2 BULL Long
Für Ihre edit:
df = pd.DataFrame([['BULL APPLE X5',''],['BEAR APPLE X5',''],['BULL APPLE X5','']], columns=['A','B'])
df["B"] = df["A"].map(lambda x: "Long" if "BULL" in x else "Short" if "BEAR" in x else "")
print(df)
A B
0 BULL APPLE X5 Long
1 BEAR APPLE X5 Short
2 BULL APPLE X5 Long
Oder fügen Sie einfach die Spalte nach:
df = pd.DataFrame(['BULL APPLE X5','BEAR APPLE X5','BLL APPLE X5'], columns=['A'])
df["B"] = df["A"].map(lambda x: "Long" if "BULL" in x else "Short" if "BEAR" in x else "")
print(df)
Oder mit enthält:
df = pd.DataFrame([['BULL APPLE X5',''],['BEAR APPLE X5',''],['BULL APPLE X5','']], columns=['A','B'])
df["B"][df['A'].str.contains("BULL")] = "Long"
df["B"][df['A'].str.contains("BEAR")] = "Short"
print(df)
0 BULL APPLE X5 Long
1 BEAR APPLE X5 Short
2 BULL APPLE X5 Long
Dies ist ein sehr gute Frage. Die gewünschte Spalte B ist Binary, wenn Sie B basierend auf der String-Suche zuweisen müssen. – user3341078