Python 根据列值向数据框添加数据

Python 根据列值向数据框添加数据,python,pandas,Python,Pandas,我有一个数据框,看起来像这样: df = col_name1 col_name2 data_march data_april data_may -------------------------------------------------------------- tony stark 5.5 5.9 6.1 bucky barnes 4.5 5.0

我有一个数据框,看起来像这样:

df = 

col_name1    col_name2    data_march    data_april    data_may
--------------------------------------------------------------
tony         stark        5.5           5.9           6.1
bucky        barnes       4.5           5.0           5.7
steve        rogers       3.1           4.5           9.1
sam          wilson       5.6           3.3           2.1
new_data = [(tony, stark, 6.5), (steve, rogers, 6.0), (sam, wilson, 1.5)]
然后我做了一些分析,得到了一组类似的元组:

df = 

col_name1    col_name2    data_march    data_april    data_may
--------------------------------------------------------------
tony         stark        5.5           5.9           6.1
bucky        barnes       4.5           5.0           5.7
steve        rogers       3.1           4.5           9.1
sam          wilson       5.6           3.3           2.1
new_data = [(tony, stark, 6.5), (steve, rogers, 6.0), (sam, wilson, 1.5)]
从这里可以看出,
新的\u数据
不包含任何关于
bucky barnes
的内容,但是我仍然希望生成的数据帧如下所示:

df = 

col_name1    col_name2    data_march    data_april    data_may    data_june
---------------------------------------------------------------------------
tony         stark        5.5           5.9           6.1         6.5
bucky        barnes       4.5           5.0           5.7
steve        rogers       3.1           4.5           9.1         6.0
sam          wilson       5.6           3.3           2.1         1.5
我事先知道这是
june
数据,所以在最后一列中添加日期就像:

month = 'june'
df[f'data_{month}'] = [x[2] for x in new_data]

但是,这不会修复bucky barnes中的“缺失”值,您可以创建一个新的数据帧,然后执行左合并

new_df = pd.DataFrame(new_data,columns=['col_name1','col_name2','data_june'])
# using fillna('') will cause a numeric column to become an object column.
df_merge = pd.merge(df,new_df,on=['col_name1','col_name2'],how='left').fillna('')


  col_name1 col_name2  data_march  data_april  data_may data_june
0      tony     stark         5.5         5.9       6.1       6.5
1     bucky    barnes         4.5         5.0       5.7          
2     steve    rogers         3.1         4.5       9.1         6
3       sam    wilson         5.6         3.3       2.1       1.5

您可以创建一个新的数据帧,然后执行左合并

new_df = pd.DataFrame(new_data,columns=['col_name1','col_name2','data_june'])
# using fillna('') will cause a numeric column to become an object column.
df_merge = pd.merge(df,new_df,on=['col_name1','col_name2'],how='left').fillna('')


  col_name1 col_name2  data_march  data_april  data_may data_june
0      tony     stark         5.5         5.9       6.1       6.5
1     bucky    barnes         4.5         5.0       5.7          
2     steve    rogers         3.1         4.5       9.1         6
3       sam    wilson         5.6         3.3       2.1       1.5

如何计算每个元组中的最后一个值?如何计算每个元组中的最后一个值?