как управлять несколькими фреймами данных и сохранять значения в новом фрейме данных - PullRequest
0 голосов
/ 09 июля 2020

У меня следующая ситуация:

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

table1 = pd.DataFrame([[0,1],[0,1],[0,1],[0,1],[0,1]], columns=['v1','v2'])

У меня есть один фрейм данных, каждый элемент которого ссылается на эти таблицы, примерно так:

df = pd.DataFrame([table1, table2, table3, table4], columns=['tablename'])

Мне нужно создать новый столбец в df, который содержит для каждой таблицы значения, которые я получаю из np.polyfit(table1['v1'],table1['v2'],1)

Я попытался сделать следующее

for x in df['tablename']:
    df.loc[:,'fit_result'] = np.polyfit(x['v1'],x['v2'],1)

но он мне возвращает

 TypeError: string indices must be integers

Есть способ сделать это? или я пишу что-то бессмысленное?

obs: на самом деле, эти таблицы ОГРОМНЫЕ и содержат более двух столбцов.

1 Ответ

1 голос
/ 09 июля 2020

Вы можете попробовать что-то вроде этого

import numpy as np
import pandas as pd


table1 = pd.DataFrame([[0.0,0.0],[1.0,0.8],[2.0,0.9],[3.0,0.1],[4.0,-0.8],[5.0,-1.0]], columns=['table1_v1','table1_v2'])

df = pd.DataFrame([['some','random'],['values','here']], columns=['example_1','example_2'])

def fit_result(v1,v2):
    return np.polyfit(v1, v2, 1)

df['fit_result'] = df.apply(lambda row: fit_result(table1['table1_v1'].values,table1['table1_v2'].values), axis=1)

df.head()

Вывод


example_1   example_2   fit_result
0   some    random  [-0.3028571428571428, 0.7571428571428572]
1   values  here    [-0.3028571428571428, 0.7571428571428572]

Вам нужно сделать это только для всех ваших фреймов данных и объединить их все в конце

df_col = pd.concat ([df1, df2], axis = 1) (https://www.datacamp.com/community/tutorials/joining-dataframes-pandas)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...