如何使用python以相同的顺序再次合并两个分离的数据帧

2024-04-24 23:07:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.csv格式的输入数据集,我正试图用python输入它并进行一些数据分析。示例格式如下:

测向(df)

cus_ID hrs   mins    col4   risk
 1      2      7      1      NA
 2      3      5      1      NA
 1      1      4      6      2
 7      8      9      1      1 
 12     13     2      34     NA
 4      5      6      1      7
 16     7      10     22     NA
 12     10     3      12     9

如果你看到了,第5列有NA值。我已经单独过滤了这个NA值,因此hana值的所有行都已从这个dataframe中删除并复制到新的dataframe中,这样生成的dataframe将如下所示:

具有NA值的数据帧(df1):

^{pr2}$

无NA值的数据帧(df2):

^{3}$

在这里,我对Nan进行了一些操作并更新了值。我需要将新更新的Col5值按与前面相同的顺序排列。示例:如果我的NaN值更新为2.3,3.5,10,4,(这些值不按顺序排列,它们是以小数点或整数随机生成的),现在我希望df1的这些更新的行包含DataFrame而不包含NA值df2,我需要以与初始DataFrame相同的顺序获取更新的DataFrame。在

   cus_ID hrs   mins    col4   risk
    1      2      7      1      2.3(NA Value replaced)
    2      3      5      1      3.5(NA Value replaced)
    1      1      4      6      2
    7      8      9      1      1 
    12     13     2      34     10 (NA Value replaced)
    4      5      6      1      7
    16     7      10     22     4 (NA Value replaced)
    12     10     3      12     9

注意:我希望这些更新的行以与初始数据帧相同的顺序追加。我分裂的主要原因是,我使用某种操作来预测NA值。仅作为示例,我提供了数据帧的基本表示,但我的数据帧有数千条记录和许多其他属性,并且在风险列中有许多随机分布的NA值。 我通过一些操作找到了NA值,并用一些值填充了所有的空值。但是现在我要研究如何用这个计算的NA值替换初始数据集中的NA值。我应该做一些concat,还是应该将df2与我的初始数据帧df进行比较,并做一些groupby选项(考虑客户ID或小时或任何其他属性)来替换NA值? 我想用python pandas实现它。有人能帮我弄个密码吗?在


Tags: 数据id示例dataframedfvalue格式df2
2条回答

您可以在不拆分数据帧的情况下执行此操作:

df.loc[pd.isnull(df.col5),'col5']= np.arange(3)

将产生您想要的结果:

^{pr2}$

您可以将^{}^{}一起使用:

print df
   cus_ID  hrs  mins  col4  risk
0       1    2     7     1   NaN
1       2    3     5     1   NaN
2       1    1     4     6   2.0
3       7    8     9     1   1.0
4      12   13     2    34   NaN
5       4    5     6     1   7.0
6      16    7    10    22   NaN
7      12   10     3    12   9.0

df1 = df[df.risk.isnull()].copy()
print df1
   cus_ID  hrs  mins  col4  risk
0       1    2     7     1   NaN
1       2    3     5     1   NaN
4      12   13     2    34   NaN
6      16    7    10    22   NaN

df2 = df[df.risk.notnull()].copy()
print df2
   cus_ID  hrs  mins  col4  risk
2       1    1     4     6   2.0
3       7    8     9     1   1.0
5       4    5     6     1   7.0
7      12   10     3    12   9.0

#append values to column risk
df1['risk'] = [2.3,3.5,10,4]
print df1
   cus_ID  hrs  mins  col4  risk
0       1    2     7     1   2.3
1       2    3     5     1   3.5
4      12   13     2    34  10.0
6      16    7    10    22   4.0
^{pr2}$

相关问题 更多 >