Python dataframe处理中的一些坑

1.dataframe增删

#创建空的新dataframe train_FD001是个人数据,是已创建好的dataframe
columns_last=train_FD001.columns

loc_data2=pd.DataFrame(columns=columns_last)

#本人切片的条件可以忽略  RUL_FD001是datafrme类型,也涉及到dataframe转list

list_rul=list(numpy.array(RUL_FD001.values).flat) 

i=unit_first

while i<=unit_last:
    loc_data2=loc_data2.append(train_FD001.loc[(train_FD001.unit_number==i)&(train_FD001.time_in_cycles==list_rul[i-1])], ignore_index=True)
    #坑1 必须df=df.append 虽然前面删除遇到过这个坑但是这次添加又忘记了 
    #另:注意切片的列和被添加的列相同

2.append会将增加的列中int64类型模糊成object类型

max_loc=loc_data2.describe().max()

min_loc=loc_data2.describe().min()

columns_last=columns_last.drop(['unit_number','time_in_cycles'])

f={}

for colu in columns_last:

    differ=max_loc[colu]-min_loc[colu]
    #本人代码这一行报错,因为loc_data2中有一列被模糊成了obeject类型,因此describe方法忽略了该列
    #而列标签中却还有这一列,所以会出现键错误
    sum_j=max_loc[colu]+min_loc[colu]

    f_i=(differ/(sum_j/2))/c[colu]

    f[colu]=f_i

解决方案

loc_data2=loc_data2.infer_objects()
#infer_objects()方法会将object类型再推断为int64类型 
#还是 df=df.方法 这个坑要注意在dataframe的各种处理中 

max_loc=loc_data2.describe().max()

min_loc=loc_data2.describe().min()

columns_last=columns_last.drop(['unit_number','time_in_cycles'])

f={}

for colu in columns_last:

    differ=max_loc[colu]-min_loc[colu]

    sum_j=max_loc[colu]+min_loc[colu]

    f_i=(differ/(sum_j/2))/c[colu]

    f[colu]=f_i

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值