Если я понимаю, что вы ищете ...
Вы можете использовать update
после создания кадра данных из пар (index, col):
# sample data
df = pd.DataFrame({'cat_list':list('ABCDE'),
'col2':[0]*5,
'col2':[0,0,1,0,1],
'col3':[1,1,0,0,0],
'col4':[0,0,0,1,0]})
# index,col values where df==1
new = pd.DataFrame(list(df[df ==1 ].stack().index)).set_index(0).rename(columns={1:'cat_list'})
df.update(new)
cat_list col2 col3 col4
0 col3 0 1 0
1 col3 0 1 0
2 col2 1 0 0
3 col4 0 0 1
4 col2 1 0 0
или вы хотите объединить?
# sample data
df = pd.DataFrame({'cat_list':list('ABCDE'),
'col2':[0]*5,
'col2':[0,0,1,0,1],
'col3':[1,1,0,0,0],
'col4':[0,0,0,1,0]})
# index,col values where df==1
new = pd.DataFrame(list(df[df ==1 ].stack().index)).set_index(0).rename(columns={1:'cat_list'})
df.merge(new, left_index=True, right_index=True)
cat_list_x col2 col3 col4 cat_list_y
0 A 0 1 0 col3
1 B 0 1 0 col3
2 C 1 0 0 col2
3 D 0 0 1 col4
4 E 1 0 0 col2
Хорошее место для запуска для статистики сети было бы вызовом GetIpStatistics в функциях Windows IPHelper.
Существует несколько других подходов, которые являются возможно большим количеством портативного:-
Позвольте мне ответить мне, поскольку я спросил то же относительно другого форума.
WMI хорош, но легче использовать IpHlpApi вместо этого:
#include <winsock2.h>
#include <iphlpapi.h>
int main(int argc, char *argv[])
{
PMIB_IFTABLE pIfTable;
MIB_IFROW ifRow;
PMIB_IFROW pIfRow = &ifRow;
DWORD dwSize = 0;
// first call returns the buffer size needed
DWORD retv = GetIfTable(pIfTable, &dwSize, true);
if (retv != ERROR_INSUFFICIENT_BUFFER)
WriteErrorAndExit(retv);
pIfTable = (MIB_IFTABLE*)malloc(dwSize);
retv = GetIfTable(pIfTable, &dwSize, true);
if (retv != NO_ERROR)
WriteErrorAndExit(retv);
// Get index
int i,j;
printf("\tNum Entries: %ld\n\n", pIfTable->dwNumEntries);
for (i = 0; i < (int) pIfTable->dwNumEntries; i++)
{
pIfRow = (MIB_IFROW *) & pIfTable->table[i];
printf("\tIndex[%d]:\t %ld\n", i, pIfRow->dwIndex);
printf("\tInterfaceName[%d]:\t %ws", i, pIfRow->wszName);
printf("\n");
printf("\tDescription[%d]:\t ", i);
for (j = 0; j < (int) pIfRow->dwDescrLen; j++)
printf("%c", pIfRow->bDescr[j]);
printf("\n");
...
WMI обеспечит те чтения:
SELECT * FROM Win32_PerfFormattedData_Tcpip_IP
SELECT * FROM Win32_PerfFormattedData_Tcpip_TCP
SELECT * FROM Win32_PerfFormattedData_Tcpip_UDP
SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMP
SELECT * FROM Win32_PerfFormattedData_Tcpip_Networkinterface
Эти классы являются доступными на Windows XP или более новыми. Вам, вероятно, придется оставить к соответствию классы "Win32_PerfRawData" на Windows 2000 и сделать немного больше математики, прежде чем можно будет отобразить вывод.
Найдите документацию относительно всех них в MSDN.
Посмотрите Google Groups, исходный netstats исходный код много раз отправлялся (win32 api)
Szia,
из http://en.wikipedia.org/wiki/Netstat
На платформе Windows, netstat информация может быть получен путем вызывания функций GetTcpTable и GetUdpTable в Помощнике IP API или IPHLPAPI.DLL. Возвращенная информация включает локальные и удаленные IP-адреса, локальные и удаленные порты, и (для GetTcpTable) коды состояния TCP. В дополнение к инструменту netstat.exe командной строки, который поставлется с Windows, существуют основанные на GUI netstat доступные программы. На платформе Windows эта команда доступна, только если Протокол Интернета (TCP/IP) протокол установлен как компонент в свойствах сетевого адаптера в Сетевых соединениях.
Образец MFC в CodeProject: http://www.codeproject.com/KB/applications/wnetstat.aspx
Вы могли бы найти выполнимый счетчик производительности WMI, например, Win32_PerfRawData_Tcpip_NetworkInterface.