Вы можете использовать функции, предоставляемые средой хостинга, через javascript:
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.send( null );
return xmlHttp.responseText;
}
Однако синхронные запросы не рекомендуется, поэтому вы можете использовать это вместо:
function httpGetAsync(theUrl, callback)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
callback(xmlHttp.responseText);
}
xmlHttp.open("GET", theUrl, true); // true for asynchronous
xmlHttp.send(null);
}
Примечание. Начиная с Gecko 30.0 (Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27), синхронные запросы в основном потоке устарели из-за негативных последствий для пользователя.
blockquote>
Предполагая, что ваш фрейм данных выглядит так ( я добавил 2 дополнительные строки внизу, так как в вашем примере не было ничего, чтобы воспроизвести остальную часть кода ):
Terminal_ID TSG Date Terminal_no Vol
0 t_tel_003 CashCheck 2018-01-10 3 61
1 t_tel_003 CashCheck 2018-01-10 3 3
2 t_tel_003 CommercialDeposit 2018-01-10 3 12
3 t_tel_003 CommercialDeposit 2018-01-10 3 10
4 t_tel_003 CommercialDeposit 2018-01-10 3 122
5 t_tel_003 CommercialDeposit 2018-01-10 3 1
6 t_tel_004 CommercialDeposit 2018-01-10 3 1
7 t_tel_003 CommercialDeposit 2018-01-10 4 1
Когда вы видим, что последние 2 строки совершенно разные и не имеют соответствия, учитывая все 4 столбца (следовательно, выходные данные должны иметь эти 2 строки такими, какие они есть):
Используя ниже:
df_dup = df.groupby([df.index//2,'Terminal_ID','TSG','Date','Terminal_no'])[df.columns].apply(lambda x : x[x[x.columns[:-1]].duplicated(keep=False)]['Vol'].sum()).reset_index().rename(columns={0:'Vol'}).drop('level_0',axis=1).replace(0,np.nan).dropna()
df_uniq =df[~df[df.columns[:-1]].duplicated(keep=False)]
pd.concat([df_dup,df_uniq],ignore_index=True)
[1112 ] Вывести
Terminal_ID TSG Date Terminal_no Vol
0 t_tel_003 CashCheck 2018-01-10 3 64.0
1 t_tel_003 CommercialDeposit 2018-01-10 3 22.0
2 t_tel_003 CommercialDeposit 2018-01-10 3 123.0
3 t_tel_004 CommercialDeposit 2018-01-10 3 1.0
4 t_tel_003 CommercialDeposit 2018-01-10 4 1.0
Объяснение df_dup
Группировать каждые 2 строки, используя df.index//2
в группе, затем применять функцию к каждой группе, которая проверяет, является ли каждая группа (в данном случае 2 строки, исключая последний столбец Vol
) одинаковой, а затем вносит сумму в столбец Vol
.
df_uniq
: отфильтровать полностью уникальные значения. Наконец, объедините оба, чтобы получить желаемый результат.