Как связать данные свойств схемы на разных страницах [дубликат]

Мне удалось отфильтровать это до моего требования показывать месяц и год, изменяя dt.month на dt.strftime

df.join(df.apply(lambda x: 
             pd.Series(pd.date_range(x.StartDate,
                                     x.EndDate,
                                     freq='D')).dt.strftime('%b-%y'),1)

      .apply(lambda x: 
             x.value_counts(),1)
      .rename(columns=dict(enumerate(calendar.month_abbr)))) 

Однако на выходе теперь перечислены столбцы в алфавитном порядке, а не в январе до декабря по порядку года.

Любые идеи о том, как достичь этого, приветствуются

Ответ Скотта Бостона

Во-первых, ваше вышесказанное, вы надеваете Вам нужно переименовать часть, потому что вы уже выполняете переименование при преобразовании в% m из серии дат.

Теперь проблема возникает с этим методом, когда вы вынимаете .dt.month, который возвращает «номер месяца», который используется для сортировки. Когда вы меняете это имя месяца использования, теперь вы делаете лексикографический вид. Итак, давайте переключимся на номер месяца (для сортировки) и сделаем небольшую лямбда-функцию для преобразования столбцов с номера месяца в имя.

df.join(df.apply(lambda x: 
             pd.Series(pd.date_range(x.StartDate,
                                     x.EndDate,
                                     freq='D')).dt.strftime('%m-%y'),1)
     .apply(lambda x: 
               x.value_counts(),1)
     .rename(columns=lambda x: 
                     pd.to_datetime(x, format='%m-%y').strftime('%b-%y')))

Выход:

             StartDate             EndDate       Days  Mar-18  Apr-18  May-18  Jun-18
0  2018-03-20 00:36:00 2018-05-01 00:42:00  42.004167    12.0    30.0     1.0     NaN
1  2018-05-01 00:42:00 2018-06-04 17:15:38  34.690023     NaN     NaN    31.0     4.0
2  2018-04-07 15:06:00 2018-05-09 17:01:00  32.079861     NaN    24.0     9.0     NaN
3  2018-03-21 04:36:00 2018-05-14 04:00:00  53.975000    11.0    30.0    13.0     NaN
4  2018-03-15 15:30:00 2018-05-08 08:30:00  53.708333    17.0    30.0     7.0     NaN
5  2018-05-08 08:30:00 2018-06-09 10:40:09  32.090382     NaN     NaN    24.0     9.0
6  2018-03-21 09:00:00 2018-05-16 13:40:00  56.194444    11.0    30.0    16.0     NaN
7  2018-03-31 06:00:00 2018-05-26 16:30:00  56.437500     1.0    30.0    26.0     NaN
8  2018-03-14 18:18:00 2018-04-27 01:00:00  43.279167    18.0    26.0     NaN     NaN
9  2018-04-07 15:00:00 2018-06-01 09:25:50  54.767940     NaN    24.0    31.0     NaN
10 2018-03-22 07:30:00 2018-05-20 19:00:00  59.479167    10.0    30.0    20.0     NaN
6
задан porkslow 13 January 2016 в 09:44
поделиться

2 ответа

Что вы ищете для идентификаторов узлов (см. http://www.w3.org/TR/json-ld/#node-identifiers ). Вы назначаете каждому объекту уникальный идентификатор в виде URL-адреса и используете его в ссылках:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@id": "http://event.com/#mainEvent",
  "@type": "Event",
  "name": "MainEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
}
</script>

Вы видите, что я дал событию @id. Я добавил фрагмент (#mainEvent), потому что http://event.com/ обычно идентифицировал бы страницу. Затем вы можете ссылаться на событие следующим образом:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
  superEvent {
    "@id": "http://event.com/#mainEvent"
  }
}
</script>

Встраивание, как показано в вашем примере, также работает. В этом случае вам не понадобятся идентификаторы, так как ясно, какие ссылки какие.

3
ответ дан Markus Lanthaler 28 August 2018 в 07:57
поделиться

Вы можете идентифицировать узел, указав ему URI, указанный в ключе @id. Этот URI можно использовать для ссылки на этот узел.

См. Раздел « Идентификаторы узлов » в спецификации JSON-LD.

Таким образом, ваше главное событие может получить URI http://example.com/2016-04-21#main-event:

<script type="application/ld+json">
{
  "@id": "http://example.com/2016-04-21#main-event",
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "MainEvent",
  "startDate": "2016-04-21T12:00"
}
</script>

, и вы можете дать этот URI как значение свойства superEvent дополнительного события:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "superEvent": { "@id": "http://example.com/2016-04-21#main-event" }
}
</script>

(Конечно, вы могли бы дайте вашему вспомогательному событию значение @id. Это позволит вам и другим пользователям идентифицировать / ссылаться на это вспомогательное событие.)

11
ответ дан unor 28 August 2018 в 07:57
поделиться