Сначала создайте фреймы данных вроде:
import pandas as pd
data = pd.DataFrame(data=[["red", "apple"], ["yellow", "orange"], ["blue", "banana"], ["green", "avocado"]],
columns=["color", "fruitN"])
data = data.set_index("fruitN")
file_1 = ["akee", "apricot", "avocado"]
file_2 = ["avocado", "bilberry", "banana", "blackberry"]
file_3 = ["blackberry", "coconut", "cranberry"]
file_1_df = pd.DataFrame(data=[1] * len(file_1), index=file_1, columns=["type_1"])
file_2_df = pd.DataFrame(data=[1] * len(file_2), index=file_2, columns=["type_2"])
file_3_df = pd.DataFrame(data=[1] * len(file_3), index=file_3, columns=["type_3"])
, затем объединить их с соответствующей осью и установить для сортировки значение false:
data_concat = pd.concat([data, file_1_df, file_2_df, file_3_df], axis=1, sort=False).fillna(0)
затем выберите правильные индексы и переформатируйте данные результатов, как вам нравится, я сделал это, чтобы получить именно то, что вы упомянули, что вам нужно:
res = data_concat.loc[["apple", "orange", "banana", "avocado"]]
res.reset_index(level=0, inplace=True)
res.columns = ["fruitN", "color", "type_1", "type_2", "type_3"]
res = res.ix[:, ["color", "fruitN", "type_1", "type_2", "type_3"]]
print(res)
это дает:
color fruitN type_1 type_2 type_3
0 red apple 0.0 0.0 0.0
1 yellow orange 0.0 0.0 0.0
2 blue banana 0.0 1.0 0.0
3 green avocado 1.0 1.0 0.0
Надеюсь, это поможет вам.