df1 выглядит примерно так:
name age
1 Bobby 17
2 Sally 23
3 John 19
df2 выглядит так:
name city state
1 Bobby Lakeside MN
2 Sally Carlstown MS
3 John Wallsburg UT
Я зацикливаюсь на DataFrame, df1, вот так:
for row in df1.itertuples(name='Pandas', index=True):
name = getattr(row, "name")
print(type(name))
print(name)
и я получу (как и ожидалось):
<type 'str'>
Bobby
<type 'str'>
Sally
<type 'str'>
John
Затем я ищу второй фрейм данных, df2, и получаю его местоположение строки (индекс), поэтому я могу получить дополнительную информацию.
i = df2[(df2['name'] == "Bobby").index.item()
i
теперь является целым числом ... работает как чемпион.Он нашел Бобби в другом DataFrame, df2 и walla!Дали мне индексный номер.
Однако ... , если я попытаюсь заменить жестко закодированную строку "Bobby" на переменную, подобную этой ...
for row in df1.itertuples(name='Pandas', index=True):
name = getattr(row, "name")
i = df2[(df2['name'] == name)].index.item()
затем он взрывается и умирает.
for row in df1.itertuples(name='Pandas', index=True):
name = getattr(row, "name")
i = df2[(df2['name'] == str(name))].index.item()
Я получаю следующее исключение:
ValueError: can only convert an array of size 1 to a Python scalar
Я в полной растерянности, помогите!и спасибо!