您可以使用:
#create list with one item values
df = df.applymap(lambda x: x if isinstance(x, list) else [x])
print (df)
location menu price
0 [NY, CA, MI] [Italian, Greek] [$$]
1 [CA] [Japanese] [$$]
2 [NY, CA, MA] [Italian, Greek, Japanese] [$]
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
#create Series for each column by list comprehension
vals = [pd.Series(mlb.fit_transform(df[x]).tolist()) for x in df.columns]
#concat to df
df2 = pd.concat(vals, keys=df.columns, axis=1)
print (df2)
location menu price
0 [1, 0, 1, 1] [1, 1, 0] [0, 1]
1 [1, 0, 0, 0] [0, 0, 1] [0, 1]
2 [1, 1, 0, 1] [1, 1, 1] [1, 0]