首页 > 解决方案 > 如何操作多个数据帧并将值存储在新数据帧中

问题描述

我有以下情况:

我有多个看起来像这样的表:

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:事实上,这些表是巨大的,包含多于两列。

标签: pythonpandas

解决方案


你可以试试这样的

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 )


推荐阅读