Сначала используйте DataFrame.join
с левым соединением по умолчанию, а затем оперируйте с добавленными столбцами:
df = df1.join(df2, on='color')
df['apples'] = df['x'] * df['apples'] ** df['y']
print (df)
apples color x y
0 141.421356 1 100 0.5
1 100.000000 1 100 0.5
2 223.606798 1 100 0.5
3 342.353972 2 200 0.3
4 358.557993 2 200 0.3
Соединение слева, поэтому добавление к новому столбцу в df1
должно работать :
df = df1.join(df2, on='color')
df1['apples'] = df['x'] * df['apples'] ** df['y']
print (df1)
apples color
0 141.421356 1
1 100.000000 1
2 223.606798 1
3 342.353972 2
4 358.557993 2
Еще одна идея - использовать double map
:
df1['apples'] = df1['color'].map(df2['x']) * df1['apples'] ** df1['color'].map(df2['y'])
print (df1)
apples color
0 141.421356 1
1 100.000000 1
2 223.606798 1
3 342.353972 2
4 358.557993 2
Ваша проблема может явиться результатом того, что Вы используете <промежуток> тег неправильно.
Промежутки, как предполагается, являются встроенными элементами, и Вы разрабатываете его, как будто это был элемент блока. По общему признанию можно вынудить промежуток вести себя как элемент блока путем добавления правильного стиля, но это не могут всегда соблюдать различные браузеры там.
Идеально необходимо использовать отделение вместо этого. Можно затем использовать или теги p или дальнейшие теги Div для указания на абзацы (идеально p, так как семантически они на самом деле - абзацы, а не несвязанные блоки текста).
Вы могли засунуть другой промежуток там как "фальшивку" p тег:
<li><a href="">List item
<span>
<span>words words words that are "paragraph" 1 of List item</span>
<span>different words that make up "paragraph" 2 of List item</span>
</span></a></li>
И в Вашей CSS:
#rightlist span span {display:block;margin:...}
Отметьте что-либо, для чего Вы объявляете #rightlist span
будет относиться #rightlist span span
, таким образом, Вы, возможно, должны были бы переопределить некоторые правила в #rightlist span span
.
Допустите ошибку нет ничего неправильно с наличием <br>
внутри <a>
или <span>
. Это совершенно допустимо согласно спецификации HTML 4.01.
Править: <li>
может содержать <p>
, <br>
, и в значительной степени что-либо еще.
Спецификацию немного трудно считать, но в основном говорит:
LI
может содержать block
или inline
block
сделан из P
+ некоторые другие вещиinline
сделан из special
+ некоторые другие вещиspecial
сделан из A
+ BR
+ некоторые другие вещиОтносительно <a>
это говорит:
A
может содержать inline
кроме A
inline
... посмотрите вышеПочему Ваш текущий путь неправильно?
Можно попробовать это
<span>
<p>words words words that are "paragraph" 1 of List item</p>
<p>different words that make up "paragraph" 2 of List item</p>
</span>
Почему это 'Неправильно'?
Ваш тег br должен, возможно, быть кодирован как:
<br />