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
如何计算每个元组中的最后一个值?如何计算每个元组中的最后一个值?