首页 > 解决方案 > 更新从函数获得的 pandas 数据帧值

问题描述

我的目标是用函数产生'df1'的新值更新我的数据框。'df2'这是一个更复杂的脚本的简化,我不能免除自己使用两个函数。

import pandas as pd

def new_df2(i):
    d2 = {'col1': [i, i-1], 'col2': [i+1, i+2]}
    df2 = pd.DataFrame(data=d2)
    merge_df(df1, df2)

def merge_df(df1, df2):
    df1 = df1.append(df2)

d1 = {'col1': [5, 6], 'col2': [7, 8]}
df1 = pd.DataFrame(data=d1)

for i in range(1,3,1):
    new_df2(i)

我的结果:

print(df1)

   col1  col2
0     5     7
1     6     8

预期结果:

print(df1)

   col1  col2
0     5     7
1     6     8
0     1     2
1     0     3
0     2     3
1     1     4

标签: pythonpandas

解决方案


像这样的东西会起作用:

In [232]: d1 = {'col1': [5, 6], 'col2': [7, 8]}                                                                                                                                                             

In [233]: df1 = pd.DataFrame(data=d1)                                                                                                                                                                       

In [234]: df = pd.DataFrame()                                                                                                                                                                               

In [235]: def new_df2(i): 
     ...:     d2 = {'col1': [i, i-1], 'col2': [i+1, i+2]} 
     ...:     df2 = pd.DataFrame(data=d2)  
     ...:     return df2  
     ...:                                                                                                                                                                                                   

In [236]: def merge_df(df1, df2): 
     ...:     df1 = df1.append(df2)  
     ...:     return df1  
     ...:                                                                                                                                                                                                   

In [237]: for i in range(1,3,1): 
     ...:     df2 = new_df2(i) 
     ...:     df = df.append(df2)  
     ...:                                                                                                                                                                                                   

In [238]: df1 = merge_df(df1,df)                                                                                                                                                                            

In [239]: df1                                                                                                                                                                                               
Out[239]: 
   col1  col2
0     5     7
1     6     8
0     1     2
1     0     3
0     2     3
1     1     4

推荐阅读