У меня есть база данных участников исследования, чьи идентификаторы хранятся в следующем формате «0000.000».Где первые четыре цифры - их идентификационный номер семьи, а последние три цифры - их индивидуальный индекс в семье.У большинства пользователей есть суффикс «.000», но у некоторых есть «.001», «.002» и т. Д.
В результате некоторых недостатков эти числа сохраняются как числа с плавающей запятой.Я пытаюсь импортировать их как строки, чтобы я мог использовать их в соединении с другим фреймом данных, который правильно отформатирован.
Эти идентификаторы, заканчивающиеся на .000, импортируются как «0000», а не как «0000.000" .Все остальные импортируются правильно.
Я пытаюсь перебрать идентификаторы и добавить ".000" к тем, у которых отсутствует суффикс.
Если бы я использовал R, я мог бы сделатьэто так.
df %>% mutate(StudyID = ifelse(length(StudyID)<5,
paste(StudyID,".000",sep=""),
StudyID)
Я нашел решение Python (ниже), но оно довольно неприятное.
row = 0
for i in df["StudyID"]:
if len(i)<5:
df.iloc[row,3] = i + ".000"
else: df.iloc[row,3] = i
index += 1
Я думаю, что было бы идеально сделать это как понимание списка, но я не смог найти решение, которое позволило бы мне перебирать столбец, меняя одно значение за раз.
Например, это решение правильно выполняет итерацию и проверяет логику, но заменяет каждое отдельное значение, которое оценивает True во время каждой итерации.Я только хочу, чтобы значение, оцениваемое в настоящий момент, изменилось.
[i + ".000" if len(i)<5 else i for i in df["StudyID"]]
Возможно ли это?