Хорошо, возможно, это не оптимальное решение в вычислительных затратах, но вы можете использовать только функцию iterrows
:
import pandas as pd
df1 = pd.DataFrame(columns=["OrginalState","State1","State2", "State3"])
df1.loc[0] = ["State1",None,None,None]
df1.loc[1] = ["State2",None,None,None]
df1.loc[2] = ["State3",None,None,None]
for index, row in df1.iterrows():
if(row["OrginalState"] == "State1"):
df1.loc[index]["State1"] = 1
if(row["OrginalState"] == "State2"):
df1.loc[index]["State2"] = 1
if(row["OrginalState"] == "State3"):
df1.loc[index]["State3"] = 1
print df1
Вывод:
OrginalState State1 State2 State3
0 State1 1 None None
1 State2 None 1 None
2 State3 None None 1