Dataframe对象取值与赋值

根据笔者的实践经验,对Dataframe 对象取值与赋值做一总结。
示例参考笔者上一篇博客:https://blog.csdn.net/ziyi_gong/article/details/105376758

取值

data=np.around(np.random.randn(3,4),decimals=2)
data = pd.DataFrame(data,columns=('A','B','C','D'))
print(type(data['A']))

直接取出某一列时,类型为Series 。

<class 'pandas.core.series.Series'>

需要注意上述用法在对Dataframe 和 Series 用的时候的不同,譬如:

data_A = data['A']   #  类型为序列,属性有index 和值
print(data_A)
print(data_A[0]) # 直接为值,展示值的具体类型
print(type(data_A[0]))

结果为:

0    1.76
1    1.15
2    0.23
Name: A, dtype: float64
1.76
<class 'numpy.float64'>

dataframe 取出的结果多于两列时,其结果为
另外当 .loc 取值具体到某一个点位时,其所取也为值!

赋值

在python 做数据处理的过程中,我们也经常需要对dataframe 框架中的某些列进行直接赋值,我们常见的赋值语句:

#  情形一 : 直接赋值,赋予行列相同的numpy 数组,成功
data[['A','B']]= np.array([1,2,3,4,5,6]).reshape(3,2)
# 情形二 : 赋值,赋予index相同的数值,成功
data_rep = pd.DataFrame(np.array([1,2,3,4,5,6]).reshape(3,2) ,index =[0,1,2])
data[['A','B']]=  data_rep
#  情形三 : 赋值,赋予index不同的数值,失败!
data_rep = pd.DataFrame(np.array([1,2,3,4,5,6]).reshape(3,2) ,index =[0,7,8])
data[['A','B']]=  data_rep
# 情形四 : 赋值,如果是空的dataframe 赋予dataframe ,成功!
data = pd.DataFrame(columns=('A','B','C','D'))
# 情形五 : 赋值,如果是空的dataframe 赋予numpy数组,失败!
data[['A','B']]=   np.array([1,2,3,4,5,6]).reshape(3,2)
# 情形六 : 赋值,如果是空的dataframe 必须要赋予数组,则可以这样赋予!
data['A'],data['B']=   np.array([1,2,3]),np.array([4,5,6])

总结:

  • 情形一 : 直接赋值,赋予行列相同的numpy 数组,成功
  • 情形二 : 赋值,赋予index相同的数值,成功
  • 情形三 : 赋值,赋予index不同的数值,失败!
  • 情形四 : 赋值,如果是空的dataframe 赋予dataframe ,成功!
  • 情形五 : 赋值,如果是空的dataframe 赋予numpy数组,失败!
  • 情形六 : 赋值,如果是空的dataframe 必须要赋予数组,则可以这样赋予!

赋值的时候,也可以使用.loc进行赋值。如果赋予单个值,不需要注意该索引是否存在。 但是当索引以列表形式赋予的时候,则该索引必须是存在的!

# 成功!
data.loc[4,'A'] =  1
#  失败!
data.loc[[5,6,7],'A'] =1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值