pandas仅对部分行进行列合并遇到的问题

在使用pandas过程中,对2个df进行列合并的需求可以分为两种:

1、将一个df的某一列赋值给另一个df。

2、两个df进行关联。

对于第二种需求,常用方法有pd.merge、pd.concat(axis=1),这两种函数的使用网上都有很多教程,在此不过多叙述,今天主要针对第一种需求进行分析。

针对第一种需求,可以有两种方法实现:

1、直接赋值。

2、使用pd.concat。

若需要将一个df的一列全部赋值给另一个df,两种方法直接使用即可。如:

import pandas as pd
df_a = pd.DataFrame([1,2,3,4,5],columns=['a'])
df_b = pd.DataFrame([6,7,8,9,10],columns=['b'])

# 方法1:直接赋值
df_a['b'] = df_b['b']

# 方法2:使用pd.concat
df_a = pd.concat([df_a['a'],df_b['b']],axis = 1)

而如果仅将部分行进行赋值的话,通过iloc或loc对源df进行行选择时,被赋值df也会跳过未选择的行。如,将df_b的第4行到最后赋值给df_a,则会出现如下这种情况。

import pandas as pd
df_a = pd.DataFrame([1,2,3,4,5],columns=['a'])
df_b = pd.DataFrame([6,7,8,9,10,11,12,13],columns=['b'])

# 方法1:直接赋值
df_a['b'] = df_b['b'].iloc[3:]

# df_a:
#    a     b
# 0  1   NaN
# 1  2   NaN
# 2  3   NaN
# 3  4   9.0
# 4  5  10.0

# 方法2:使用pd.concat
df_a = pd.concat([df_a['a'],df_b['b'].iloc[3:]],axis = 1)

# df_a
#      a     b
# 0  1.0   NaN
# 1  2.0   NaN
# 2  3.0   NaN
# 3  4.0   9.0
# 4  5.0  10.0
# 5  NaN  11.0
# 6  NaN  12.0
# 7  NaN  13.0

笔者找到的一种解决办法是将df_b选取后的df转化为list进行赋值即可解决。使用concat如何实现以下需求,笔者还未找到答案。

import pandas as pd
df_a = pd.DataFrame([1,2,3,4,5],columns=['a'])
df_b = pd.DataFrame([6,7,8,9,10,11,12,13],columns=['b'])

# 方法1:直接赋值
df_a['b'] = list(df_b['b'].iloc[3:])

# df_a:
#    a   b
# 0  1   9
# 1  2  10
# 2  3  11
# 3  4  12
# 4  5  13
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值