dict
в качестве аргумента value
в fillna()
Как уже упоминалось в комментарии от @rhkarls о ответе @ Джеффа, используя .loc
, проиндексированный в список столбцов, выигранных ' t поддерживают inplace
операции, которые я тоже считаю расстраивающими. Вот пример:
Пример:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1,2,3,4,np.nan],
'b':[6,7,8,np.nan,np.nan],
'x':[11,12,13,np.nan,np.nan],
'y':[16,np.nan,np.nan,19,np.nan]})
print(df)
# a b x y
#0 1.0 6.0 11.0 16.0
#1 2.0 7.0 12.0 NaN
#2 3.0 8.0 13.0 NaN
#3 4.0 NaN NaN 19.0
#4 NaN NaN NaN NaN
Предположим, мы хотим fillna
только для x
и y
, а не a
и b
.
Я ожидал бы, что .loc
будет работать (как в задании), но это не так, как упоминалось ранее:
# doesn't work
df.loc[:,['x','y']].fillna(0, inplace=True)
print(df) # nothing changed
Однако документация говорит, что аргумент value
в fillna()
может быть:
поочередно dict / Series / DataFrame значений, определяющих, какое значение использовать для каждого индекса (для серии) или столбцом (для DataFrame). (значения не в файле dict / Series / DataFrame не будут заполнены).
blockquote>Оказывается, что использование dict значений будет работать:
# works df.fillna({'x':0, 'y':0}, inplace=True) print(df) # a b x y #0 1.0 6.0 11.0 16.0 #1 2.0 7.0 12.0 0.0 #2 3.0 8.0 13.0 0.0 #3 4.0 NaN 0.0 19.0 #4 NaN NaN 0.0 0.0
Также , если в вашем подмножестве имеется много столбцов, вы можете использовать понимание dict, как в:
df.fillna({x:0 for x in ['x','y']}, inplace=True) # also works
Каждое видео YouTube имеет четыре сгенерированных изображения. Они предсказуемо отформатированы следующим образом:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
Первый в списке - это полноразмерное изображение, а другие являются миниатюрами изображения. Изображение миниатюр по умолчанию (т. Е. Один из 1.jpg
, 2.jpg
, 3.jpg
):
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
для высококачественной версии Миниатюра использует URL, аналогичный этому:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Существует также версия миниатюра средней качества, используя URL, аналогичный Hq:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
для версии стандартного определения миниатюры, используйте URL, аналогичный этому:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Для максимального разрешения версии миниатюр используйте URL, аналогичный этому:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Все вышеперечисленные URL доступны по сравнению с http. Кроме того, немного более короткое имя хоста I3.YTIMG.COM
работает на месте IMG.youtube.com
в примерных URL-адресах выше.
В качестве альтернативы вы можете использовать API API YouTube (v3) для получения миниатюрных изображений.
Сохраните этот код в пустом .php файле и протестируйте его.
<img src="<?php echo youtube_img_src('9bZkp7q19f0', 'high');?>" />
<?php
// Get a YOUTUBE video thumb image's source url for IMG tag "src" attribute:
// $ID = YouYube video ID (string)
// $size = string (default, medium, high or standard)
function youtube_img_src ($ID = null, $size = 'default') {
switch ($size) {
case 'medium':
$size = 'mqdefault';
break;
case 'high':
$size = 'hqdefault';
break;
case 'standard':
$size = 'sddefault';
break;
default:
$size = 'default';
break;
}
if ($ID) {
return sprintf('https://img.youtube.com/vi/%s/%s.jpg', $ID, $size);
}
return 'https://img.youtube.com/vi/ERROR/1.jpg';
}
Спасибо.
Вы можете получить видео в видео , который содержит URL к миниатюру видео. В ссылке есть пример код. Или, если вы хотите разбирать XML, есть информация здесь . Возвращенный XML имеет мультимедиа : эскиз
элемент, который содержит URL миниатюр.
Вы можете использовать YouTube Data API для получения эскизов, подписи, описания, рейтинга, статистики и многого другого. API версии 3 требует ключа*. Получите ключ и создайте видео: list request:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Example PHP Code
$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=T0Jqdjbed40");
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);
Output
object(stdClass)#5 (5) {
["default"]=>
object(stdClass)#6 (3) {
["url"]=>
string(46) "https://i.ytimg.com/vi/T0Jqdjbed40/default.jpg"
["width"]=>
int(120)
["height"]=>
int(90)
}
["medium"]=>
object(stdClass)#7 (3) {
["url"]=>
string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/mqdefault.jpg"
["width"]=>
int(320)
["height"]=>
int(180)
}
["high"]=>
object(stdClass)#8 (3) {
["url"]=>
string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/hqdefault.jpg"
["width"]=>
int(480)
["height"]=>
int(360)
}
["standard"]=>
object(stdClass)#9 (3) {
["url"]=>
string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/sddefault.jpg"
["width"]=>
int(640)
["height"]=>
int(480)
}
["maxres"]=>
object(stdClass)#10 (3) {
["url"]=>
string(52) "https://i.ytimg.com/vi/T0Jqdjbed40/maxresdefault.jpg"
["width"]=>
int(1280)
["height"]=>
int(720)
}
}
* Мало того, что вам нужен ключ, вас могут попросить предоставить биллинговую информацию в зависимости от количества запросов API, которые вы планируете сделать. Однако, несколько миллионов запросов в день являются бесплатными. Статья-источник