将值从另一个列数据框更新到另一个数据框

时间:2018-08-29 21:41:30

标签: python-3.x pandas

因此,我已经尽我所能来使此功能正常运行,并且在这一点上似乎令人沮丧。

这里是问题:

    Age  Complete Location Sample Sample Type Tumor  
0  None      True     None   None        None  None   
1  None      True     None   None        None  None   
2  None      True     None   None        None  None   
3  None      True     None   None        None  None   
4  None      True     None   None        None  None   
5  None      True     None   None        None  None   
6  None      True     None   None        None  None   
7  None      True     None   None        None  None   
8  None      True     None   None        None  None   
9  None      True     None   None        None  None 

这是我的空数据框,其中填充了None类型的对象。

以下是我从CSV中读取的数据,并按“样本类型”分组了

   Age  Complete Location Sample Sample Type      Tumor  
0   43      True     LUNG      1       Blood     Benign   
2   12      True     LUNG      3       Blood     Benign   
4   32      True     LUNG      5       Blood  Malignant   
6   13      True     LUNG      7       Blood  Malignant   
7   53      True    HEART      8       Blood  Malignant   
1   23      True     LUNG      2        FFPE     Benign   
3   54      True     LUNG      4        FFPE     Benign   
5   53      True     LUNG      6        FFPE  Malignant   
8  123      True    HEART      9        FFPE     Benign   
9   43      True    HEART     10        FFPE     Benign

我希望完成的是以一种优雅的方式用第二个数据帧中的值更新第一个数据帧的值,从而使一个数据帧的输出看起来像。

   Age  Complete Location Sample Sample Type      Tumor  
0   43      True     LUNG      1       Blood     Benign   
2   12      True     LUNG      3       Blood     Benign   
4   32      True     LUNG      5       Blood  Malignant   
6   13      True     LUNG      7       Blood  Malignant   
7   53      True    HEART      8       Blood  Malignant   
1   23      True     LUNG      2        FFPE     Benign   
3   54      True     LUNG      4        FFPE     Benign   
5   53      True     LUNG      6        FFPE  Malignant   
8  123      True    HEART      9        FFPE     Benign   
9   43      True    HEART     10        FFPE     Benign

我尝试过的事情并没有达到我想要的结果

删除列,然后将其重新添加到数据框1中,这给了我未证明有用的非分组值

使用

pd.concat([dataframe 1, data frame 2], axis=1)

它返回了非组对象类型

   Age  Complete Location Sample Sample Type      Tumor  \
0   43      True     LUNG      1       Blood     Benign   
1   23      True     LUNG      2        FFPE     Benign   
2   12      True     LUNG      3       Blood     Benign   
3   54      True     LUNG      4        FFPE     Benign   
4   32      True     LUNG      5       Blood  Malignant   
5   53      True     LUNG      6        FFPE  Malignant   
6   13      True     LUNG      7       Blood  Malignant   
7   53      True    HEART      8       Blood  Malignant   
8  123      True    HEART      9        FFPE     Benign   
9   43      True    HEART     10        FFPE     Benign 

我也做了.join,但是它无法将None与数据帧2中的对象值进行比较来设置它们?

我能做的最好的工作是遍历列和行并逐个更新每个单元格。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我认为您可以迭代所有列并一一更新。 因此,您拥有原始数据帧df_1和来自csv df_csv的读取数据帧。

    for col in df_1.columns.tolist():
         df_1[col] = df_csv[col]

这样,您可以将df_1中的所有列替换为df_csv中的值。

答案 1 :(得分:0)

您不必更新第一个数据框,因为第二个数据框已经看起来像您想要的输出。