J'ai un dataframe de pandas géants de fruits ::cas sensible série correspondant Pandas et propre série Panda Logic
df = pd.read_csv(newfile, header=None)
df
0 1 2 3 4 5 6 7
0 Apple Bananas Fig Elderberry Cherry Honeydew NaN NaN
1 Bananas Cherry Dragon Elderberry NaN NaN NaN NaN
2 Cherry Grape NaN NaN NaN NaN NaN NaN
3 Dragon NaN Apple Bananas Cherry Elderberry NaN NaN
4 Elderberry Apple Bananas Fig Grape NaN NaN NaN
5 Fig Cherry Honeydew Apple NaN NaN NaN NaN
6 Grape NaN NaN NaN NaN NaN NaN NaN
7 Honeydew Grape Fig Elderberry Dragon Cherry Bananas Apple
Et je suis en train de trouver des « appariements de fruits », par exemple dans la première rangée, Apple et Fig sont une paire, et 6ème rangée Fig et Apple. De même pour Apple-Elderberry et Elderberry-Apple, mais pas Apple et les bananes (il n'y a pas de pommes dans la rangée à partir de bananes).
J'ai le travail de code suivant, et qui fait cela ::
fruits = df[0]
stock = df.drop(0, axis=1)
for i in range(len(fruits)):
string1 = str(fruits[i])
full_line = (stock.iloc[i])
line = np.array(full_line.dropna(axis=0))
if len(line) > 0 :
for j in range(len(stock)):
iind = (fruits[fruits == line[j]].index[0])
this_line = stock.iloc[iind]
logic_out = this_line.str.match(string1)
print(logic_out)
MAIS !! (1) Il casse au niveau des fruits == ligne [j] car la série Pandas est sensible à la casse et (2) la sortie booléenne est un mélange de Vrai, Faux et NaN. Idéalement, je veux juste compter les Trues. Toute aide est très appréciée !!
Salut @piRSquared, cela ressemble beaucoup, mais se bloque sur la première ligne, avec un KeyError: message « 0 ». ... J'ai édité le code ci-dessus pour vous montrer comment je lis dans la df et le .cvs est ci-dessous. – npross
Pomme, Bananes, Figue, Sureau, Cerise, Honeydew ,, Bananes, Cerise, Dragon, Baie de Sureau ,,,, Cerise, Raisin ,,,,,, Dragon ,, Pomme, Bananes, Cerise, Sureau, Sureau, Pomme, Bananes, Figue, Raisin ,,, Figue, Cerise, Honeydew, Apple ,,,, Raisin ,,,,,,, Honeydew, Raisin, Figue, Sureau, Dragon, Cerise, Banane, Pomme – npross
Quel est le nom de la première colonne? Je suppose que c'était '' 0 '' parce que c'est ce qui est analysé quand je copie et passe la base de données que vous avez fournie. Essayez ma mise à jour dans une seconde. – piRSquared