[英]Add data to data frame depending on column value
I have a data frame that looks similar to this:我有一个看起来与此类似的数据框:
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
I then do some analysis where I get a bunch of tuples looking similar to this:然后我做了一些分析,我得到一堆看起来类似于这样的元组:
new_data = [(tony, stark, 6.5), (steve, rogers, 6.0), (sam, wilson, 1.5)]
As can be seen here the new_data
doesn't contain anything about bucky barnes
, however I would still like the resulting data frame to be like:从这里可以看出, new_data
不包含任何关于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
I know in advance that this is june
data, so adding the date in the last column would just be something like:我事先知道这是june
的数据,因此在最后一列中添加日期将类似于:
month = 'june'
df[f'data_{month}'] = [x[2] for x in new_data]
However, this will not fix the "missing" values from bucky barnes
.但是,这不会修复bucky barnes
的“缺失”值。
you can create a new dataframe then do a left merge.您可以创建一个新的 dataframe 然后进行左合并。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.