map
+ fillna
: map позволяет нам заменить возраст для обычных URL, а затем .fillna
восстанавливает значение для URL, которые не совпадают. Предполагается, что URL
является уникальным ключом в df1
:
df3 = df2.copy()
df3['Age'] = df3.URL.map(df1.set_index('URL').Age).fillna(df3.Age)
# URL Category Age
#0 google.com [IAB19, BBCA] A
#1 youtube.com [IAB25, AACB] H
#2 facebook.co [IAB14, HLGB A
#3 amazon.com [IAB22, ETCL] M
#4 wpedia.org [IAB5, J TCL] E
#5 example1.com [LHTB, 2213] A
#6 example2.com [OPCL, 9909] A
#7 example3.com [PPRS, 7656] A
Путем я совместно использую код между Silverlight и нормальным CLR, должен использовать, "добавьте как ссылка" функция с проектами C#. Таким образом, это заканчивает тем, что было похоже на это:
| SilverlightLib
| File1.cs
| File2.cs
| ClrLib
| File1.cs <as link>
| File2.cs <as link>
Затем VS хорошо работает, и компилируются оба набора кода. Раздражающая часть - то, где платформа Silverlight приводит в порядок не строку. (WCF имеет некоторые части, которые не существуют в SL.) В этом случае необходимо будет использовать препроцессор "#if SILVERLIGHT", чтобы заставить код предназначаться для обеих платформ.
Это работало вполне прилично до сих пор. Таким образом, я могу написать код, тест с VSTS, но все еще иметь его работа над SL из того же источника. Несколько подсказок:
Существует два способа, которыми я сделал это в прошлом.
Первый и самый легкий. Добавьте Сервис WCF как ServiceReference в Silverlight. Это будет заботиться о регенерации всех библиотек классов и обновлении их при необходимости.
Во-вторых, сохраните две копии классов, один в Silverlight и один в сбросе .net 3.5. Затем удостоверьтесь, чтобы Названия DataContract и Пространства имен соответствовали. Если Вы добавите, что ServiceReference в Silverlight затем в проводнике просматривают папку ServiceReference и смотрят на файл Reference.cs, то Вы будете видеть сгенерированные классы и можете скопировать их.
Не уверенный, если это возможно в Вашем сценарии, но Вы думали об обеспечении Ваших объектов, сериализированных как Json Вашему клиенту Silverlight? Затем в Вашем приложении Silverlight можно использовать JsonObject в Silverlight. Тем путем Вы стараетесь не иметь другой набор объектов модели в Вашем приложении Silverlight.
JsonObject user = (JsonObject)JsonObject.Load(responseStream);
bool isMember = user["IsMember"];
string name = user["Name"];
int age = user["Age"];
Пример от этого образца MSDN
Хорошая вещь об этом подходе состоит также в том, что у Вас есть поддержка linq в Silverlight, и это применимо Вашими ajax клиентами также. Это также более безопасно, чем представление Ваших реальных объектов к приложению Silverlight, работающему на клиенте.