Действительно ли возможно загрузить рекламу JavaScript в последний раз на странице для предотвращения медленного времени загрузки?

Вы можете заменить NaN для столбца '項目', проиндексировав исходный df и вызвав fillna , а затем отфильтровать строки, содержащие строку 'プレサンス', и перезаписать значения строк с помощью список пустых строк, во-первых мы shift строк на 1 вниз, поэтому он делает заголовок:

In[111]:

newFile = df1.shift(1)
newFile['項目'] = newFile['項目'].fillna(df.loc['クライアント名'])
newFile.loc[newFile['項目'].str.contains('プレサンス'),['数量','単位','単価', '金額']] = ['','','','']
newFile
Out[111]: 
                                     項目      金額 数量 単位   単価
1                        プレサンス ロジェ 和泉中央                   
2      Yahoo!リスティング 12月分 12/1〜12/31 YSS   91188  1  式  NaN
3        Yahoo!リマーケティング 12月分 12/1〜12/31   25649  1  式  NaN
4    Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31   13211  1  式  NaN
5          Googleリスティング 12月分 12/1〜12/31  131742  1  式  NaN
6        Googleリマーケティング 12月分 12/1〜12/31   35479  1  式  NaN
7    Googleディスプレイネットワーク 12月分 12/1〜12/31   18999  1  式  NaN
8                          プレサンス グラン 茨木                   
9      Yahoo!リスティング 12月分 12/1〜12/31 YSS  113373  1  式  NaN
10       Yahoo!リマーケティング 12月分 12/1〜12/31   28775  1  式  NaN
11   Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31   19010  1  式  NaN
12         Googleリスティング 12月分 12/1〜12/31  158389  1  式  NaN
13       Googleリマーケティング 12月分 12/1〜12/31   45530  1  式  NaN
14   Googleディスプレイネットワーク 12月分 12/1〜12/31   23224  1  式  NaN
15                         プレサンス ロジェ 江坂  

Теперь, когда вы хотите добавить отступы, чтобы сделать его более читабельным, мы может хранить местоположения индекса, где находятся итоговые значения, затем выполнять итерацию по ним и нарезать df, добавлять их к dict, а затем вызывать concat для вертикальной укладки дополненных фрагментов:

In[112]:

pos = newFile.index[newFile['項目'].str.contains('プレサンス')]
pos
Out[112]: Int64Index([1, 8, 15], dtype='int64')

Теперь создайте dict для каждого среза и добавьте пустую строку:

In[115]:

d = {}
i = 0
for p in pos:
    if p == pos[0]:
        d[p] = newFile.loc[:pos[i+1]-1].append(pd.Series('',newFile.columns), ignore_index=True)
    elif (i + 1) > len(pos) - 1:
        d[p] = newFile.loc[pos[i-1]+1:]
    else:
        d[p] = newFile.loc[p:pos[i+1]-1].append(pd.Series('',newFile.columns), ignore_index=True)
    i = i + 1
pd.concat(d, ignore_index=True)
Out[115]: 
                                     項目      金額 数量 単位   単価
0                        プレサンス ロジェ 和泉中央                   
1      Yahoo!リスティング 12月分 12/1〜12/31 YSS   91188  1  式  NaN
2        Yahoo!リマーケティング 12月分 12/1〜12/31   25649  1  式  NaN
3    Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31   13211  1  式  NaN
4          Googleリスティング 12月分 12/1〜12/31  131742  1  式  NaN
5        Googleリマーケティング 12月分 12/1〜12/31   35479  1  式  NaN
6    Googleディスプレイネットワーク 12月分 12/1〜12/31   18999  1  式  NaN
7                                                         
8                          プレサンス グラン 茨木                   
9      Yahoo!リスティング 12月分 12/1〜12/31 YSS  113373  1  式  NaN
10       Yahoo!リマーケティング 12月分 12/1〜12/31   28775  1  式  NaN
11   Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31   19010  1  式  NaN
12         Googleリスティング 12月分 12/1〜12/31  158389  1  式  NaN
13       Googleリマーケティング 12月分 12/1〜12/31   45530  1  式  NaN
14   Googleディスプレイネットワーク 12月分 12/1〜12/31   23224  1  式  NaN
15                                                        
16     Yahoo!リスティング 12月分 12/1〜12/31 YSS  113373  1  式  NaN
17       Yahoo!リマーケティング 12月分 12/1〜12/31   28775  1  式  NaN
18   Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31   19010  1  式  NaN
19         Googleリスティング 12月分 12/1〜12/31  158389  1  式  NaN
20       Googleリマーケティング 12月分 12/1〜12/31   45530  1  式  NaN
21   Googleディスプレイネットワーク 12月分 12/1〜12/31   23224  1  式  NaN
22                         プレサンス ロジェ 江坂  

13
задан niton 4 April 2015 в 19:43
поделиться

2 ответа

Существует defer атрибут Вы могли поставить блоки сценария для задержки его выполнения до страницы, завершает загрузку.

<script src="myscript.js" type="text/javascript" defer>
// blah blah
</script>

Я не уверен в общей рекомендации об использовании этого атрибута все же.

Править: Как @David указанный, использовать defer="defer" для XHTML

И можно всегда вставлять код window.onload событие так, чтобы это выполнилось после загрузки страниц:

window.onload = function () {
    // ad codes here

};

Но более поздний подход может создать некоторые проблемы, Вы могли бы хотеть проверить его сначала.

Больше информации об этом сообщении в блоге Dean Edwards, парнем, который записал известному упаковщику JavaScript.


Править: Если размер самого кода рекламы является проблемой, можно всегда задерживать загрузку путем объединения вышеупомянутых методов с инжекцией сценария через document.write:

function loadScript(src) {
    document.write('<script src="' + src + '" type="text/javascript"></script>');
}

Таким образом, получающийся код мог бы выглядеть примерно так:

<script type="text/javascript" defer>

function loadScript(src) {
    document.write('<script src="' + src + '" type="text/javascript"></script>');
}

loadScript('http://ads.example.com/advertisements.js');

</script>

Но поскольку я сказал, это зависит от определенного кода рекламы, который Вы получаете также. Из-за положения document.write запишет, что материалы к не могли бы быть местоположением, которое Вы хотите. Некоторые модификации могли бы быть необходимыми.

10
ответ дан 2 December 2019 в 01:11
поделиться
function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }

Вышеупомянутый код является хорошим способом добавить новое onload событие, которое не вмешивается в Ваш существующий JavaScript. Затем можно добавить новое событие загрузки для загрузки рекламных объявлений с помощью кода ниже.

addLoadEvent(function() { // call to loadScript() here });
1
ответ дан 2 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: