Большинство API-интерфейсов предоставляют аргумент «пользовательские данные» размера указателя, который будет выглядеть следующим образом:
GConn* gnet_conn_new (const gchar *hostname,
gint port,
GConnFunc func,
void* user_data);
Это позволит вам передать экземпляр в user_data и передать вашу функцию C на функция-член вроде этого:
void my_func(GConn *conn, void* user_data)
{
((MyClass*)user_data)->MyMemberFunc(conn);
}
Возможно, ваш API имеет альтернативный или аналогичный параметр «пользовательские данные» где-то. В противном случае вы не сможете сделать это без globals или statics.
Вы можете создать индекс по столбцу User
и использовать sum
по первому уровню:
csvArray = []
for x in range(1,101):
csvArray.append(pd.read_csv("myCsv{}.csv".format(x), index_col=['User']))
Или:
csvArray = [pd.read_csv("myCsv{}.csv".format(x), index_col=['User']) for x in range(1,101)]
<час> full_df = pd.concat(csvArray).fillna(0).sum(level=0).reset_index()
В вашем решении следует агрегировать по столбцу User
:
full_df = pd.concat(csvArray).fillna(0).groupby('User', as_index=False).sum()
Также вы можете попробовать:
data = pd.DataFrame()
for x in range(1, 101):
df = pd.read_csv('mycsv'+str(x)+'.csv').set_index('User')
data = data.add(df, fill_value = 0).fillna(0)