Pandas: объединяет несколько файлов .csv и возвращает Dataframe с агрегированными столбцами с одинаковым именем

Большинство 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.

1
задан user5844628 19 March 2019 в 07:35
поделиться

2 ответа

Вы можете создать индекс по столбцу 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()
0
ответ дан jezrael 19 March 2019 в 07:35
поделиться

Также вы можете попробовать:

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)
0
ответ дан Loochie 19 March 2019 в 07:35
поделиться
Другие вопросы по тегам:

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