如何通过取数值或平均值合并Pandas数据框中的2列并创建第三列?

jgovgodb  于 2022-11-20  发布在  其他
关注(0)|答案(2)|浏览(171)

我有一个包含2列的 Dataframe 。如何创建第三列:
1.如果存在col1或col2值,则采用其中之一
1.如果两者都存在,则取平均值
1.如果两者都不存在,则保留NaN
最后,我想把它存储在df ['col3']中。我试过了,但是值是错误的。

df['col3']=pd.concat([df['col2'], df['col1']]).groupby(level=0).mean()

我该怎么做?

time        col1        col2    
2000-01-31  389.5400    NaN
2000-02-29  387.7700    NaN
2000-03-31  386.6600    250.2
2000-04-30  384.1850    NaN
2000-05-31  383.3600    267.2
...     ...     ...
2020-03-31  396.3755    NaN
2020-04-30  NaN         350.12
2020-05-31  395.0485    NaN
2020-06-30  394.9400    396.321
2020-07-31  395.3070    NaN
qvsjd97n

qvsjd97n1#

答案出奇的简单:

df['col3'] = df[['col1', 'col2']].mean(axis=1)

这是由于mean默认忽略NaN(skipna=True),因此如果只有一个值,则平均值为值本身,如果只有NaNs,则输出为NaN
输出量:

time      col1     col2      col3
0  2000-01-31  389.5400      NaN  389.5400
1  2000-02-29  387.7700      NaN  387.7700
2  2000-03-31  386.6600  250.200  318.4300
3  2000-04-30  384.1850      NaN  384.1850
4  2000-05-31  383.3600  267.200  325.2800
5  2020-03-31  396.3755      NaN  396.3755
6  2020-04-30       NaN  350.120  350.1200
7  2020-05-31  395.0485      NaN  395.0485
8  2020-06-30  394.9400  396.321  395.6305
9  2020-07-31  395.3070      NaN  395.3070
ie3xauqp

ie3xauqp2#

您可以使用此选项:

df['col3'] = df.loc[:, ["col1","col2"]].mean(axis = 1)

相关问题