#python #dataframe
#python #фрейм данных
Вопрос:
У меня есть 2 файла Excel в качестве входных данных.
F1
FileName Name Gender
4-F_994637.txt XXX Not Identified
4-F_994576.txt XXX Not Identified
3-F_977039.txt XXX Not Identified
4-F_992516.txt XXX Not Identified
3-F_980311.txt XXX Not Identified
4-F_994638.txt XXX Female
4-F_994126.txt XXX Female
3-F_677039.txt XXX female
4-F_322516.txt XXX male
3-F_677311.txt XXX male
F2
FileName Name Gender
4-F_994637.txt XXX Male
4-F_994576.txt XXX Male
3-F_977039.txt XXX Male
4-F_992516.txt XXX Male
3-F_980311.txt XXX Male
Все, что я хочу, это сначала мне нужно выбрать «Gender = ‘Non Identified'» и сравнить F1 и F2 со столбцом «FileName» . И если есть совпадение, я должен заменить пол в F1 на мужской
Я попробовал приведенный ниже код, но получил ошибку
import pandas as pd
df1=pd.read_excel('F1.xlsx')
df2=pd.read_excel('F2.xlsx')
pick=df1[df1["Gender"]=='Not Identified']
filecompare=pick["FileName"] == df2["FileName"]
ValueError: Can only compare identically-labeled Series objects
Может кто-нибудь помочь, в чем суть этой ошибки.
Спасибо, Мира
Комментарии:
1. Что вы понимаете из этого сообщения об ошибке? Вы выполняли какую-либо отладку?
Ответ №1:
С pandas версии 1.1.1 ваш кодовый блок
pick=df1[df1["Gender"]=='Not Identified']
filecompare = pick["FileName"] == df2["FileName"]
display(filecompare)
ВОЗВРАТ
Вы можете проверить наличие похожих имен файлов с помощью этого isin()
метода и установить для них значение «мужской» с .loc
помощью .
cond_male = (df1['Gender']=='Not Identified') amp; (df1['FileName'].isin(df2['FileName']))
df1.loc[cond_male,'Gender']='Male'
ВОЗВРАТ