Python数据处理中的问题汇总.....

1、The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

所选的真值不明确。可能是将一个值与多个值或一个列表中的值相比较、匹配,导致的问题**
不能使用or and ,需要用|&来代替

2、KeyError: ‘labels [1 2] not contained in axis’

本项目中,要用到df.dropna()函数,这个函数的具体用法这里就不讲了,目的是删除dataframe中带有空值(nan值)的行或者列,删了也就删了,但是有个问题:

在这里插入图片描述

不知道大家有没有发现问题,没有的话,对比下图,和错误提示再来看一下:

在这里插入图片描述

这里可以看到,删除两行值后,索引不会自动更新!!,大家看看,第一列索引值,从0就直接到了6…

所以,下次进行for循环的时候,就会提示,卧槽,找不到第2.3行在哪啊,你特么晃点我…

那么,咋解决呢,找了一下,有几种方法,我这里就贴出我觉得最好用的一种吧:

在这里插入图片描述

这里的做法,就是直接安装列的长度,自己插入一列作为索引。

而且在使用dropna()函数之前使用,这样,在删除对应行的时候,就不会找不到了。

3. map使用中,如何对map中的func传参数进去?使用偏函数 partial

因为读进来的数值记录是科学计数法形式,所以要转为浮点数进行后续处理计算,就定义了一个函数,然后拿map对数据进行处理,如下:

# 科学计数法==》浮点数
def format_data(row):
	data = row
	data = '{:.8f}'.format(float(data))   # 6位小数的精度不够,取8位
	data = round(float(data)*0.017, 8)
	return data
ylst = list(map(format_data, single_point))

但是这里有个问题,这里面的0.017,是将应变转为应力的一个系数K,我想把它作为一个变量,而不是常量,就需要改为:

# 科学计数法==》浮点数
def format_data(row, k):
	data = row
	data = '{:.8f}'.format(float(data))   # 6位小数的精度不够,取8位
	data = round(float(data)*k, 8)
	return data

此时,map中的func就需要传入这个k参数了,怎么做呢?使用偏函数,即先指定一部分参数,后续再指定一部分,有点闭包的感觉。

temp = partial(format_data, k)
ylst = list(map(temp, single_point))

就可以了。
至于关于偏函数的知识大家就自己去查下吧,在我这的用途就是这个。

4. 在数制转换中,提示TypeError: can’t multiply sequence by non-int of type ‘float’
展开阅读全文

没有更多推荐了,返回首页