繁体   English   中英

如何在一列中使用来自其他数据帧的所有非 NaN 值创建新的 DataFrame

[英]How to create new DataFrame with all non-NaN values from other DataFrames in one column

我有两个DataFrames df1df2它们都包含大部分NaN值。 它们在数据集中的相同位置具有非 NaN 值。 基于这两个DataFrames ,我想为df1中的所有值创建一列,为df2 DataFrames df值对。

这里我创建了一个简单的例子:

df1:
            01K 02K 03K 04K
Dates               
2021-01-01  NaN NaN NaN NaN
2021-01-02  NaN 2.5 NaN NaN
2021-01-03  NaN NaN 4.1 NaN
2021-01-04  8.2 NaN 9.0 NaN
2021-01-05  NaN 1.2 NaN NaN
2021-01-06  NaN NaN NaN NaN

df2:
            01K 02K 03K 04K
Dates               
2021-01-01  NaN NaN NaN NaN
2021-01-02  NaN 0.6 NaN NaN
2021-01-03  NaN NaN 0.4 NaN
2021-01-04  0.1 NaN 0.2 NaN
2021-01-05  NaN 0.2 NaN NaN
2021-01-06  NaN NaN NaN NaN

df:
    df1 df2
0   8.2 0.1
1   2.5 0.6
2   1.2 0.2
3   4.1 0.4
4   9.0 0.2

为了重现性:

df1 = pd.DataFrame({
    'Dates':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06'],
    '01K':[np.nan, np.nan, np.nan, 8.2, np.nan, np.nan], 
    '02K':[np.nan, 2.5, np.nan, np.nan, 1.2, np.nan], 
    '03K':[np.nan, np.nan, 4.1, 9.0, np.nan, np.nan], 
    '04K':[np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]}) 
df1 = df1.set_index('Dates')

df2 = pd.DataFrame({
    'Dates':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06'],
    '01K':[np.nan, np.nan, np.nan, 0.1, np.nan, np.nan], 
    '02K':[np.nan, 0.6, np.nan, np.nan, 0.2, np.nan], 
    '03K':[np.nan, np.nan, 0.4, 0.2, np.nan, np.nan], 
    '04K':[np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]}) 
df2 = df2.set_index('Dates')

非常感谢您的建议

您可以使用stack来摆脱 nan 的:

pd.DataFrame({'df1': df1.stack(), 'df2': df2.stack()})

output:

                df1  df2
Dates                   
2021-01-02 02K  2.5  0.6
2021-01-03 03K  4.1  0.4
2021-01-04 01K  8.2  0.1
           03K  9.0  0.2
2021-01-05 02K  1.2  0.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM