python问题及解决
1.关于NaN,null,非空的判断等问题
使用pandas DataFrame的处理数据的过程中,遇见太多问题,整理此文档,记录遇见的问题以及解决方法,方便自己下次查看。
1.1 NaN != NaN
有些条目中没有数据,打印时它会显示成nan,而nan是没有办法和任何数据进行比较的,它不和任何值相等,包括他自己(因此也可以用 a ! = a 来判断a是否是nan)。
import pandas as pd
df = pd.read_csv('test.csv')
print(df)
name id
0 zhangsan 1
1 lisi 2
2 wanger NaN
3 wanzi 4
print(df['id'].notnull()
0 True
1 True
2 False
3 True
print(df[df['id'].notnull()]
name id
0 zhangsan 1
1 lisi 2
3 wanzi 4
2. x.ravel()和x.flatten()的区别
,这两个函数的作用是,将多维降低为一维。返回copy还是返回原图的区别。x.flatten()返回的是copy,修改它,不会对原始的x有影响,但是x.ravel()返回的是原始的view,修改它会直接修改原始的x值。
>> x = np.array([[1,2],[3,4]])
>>> x.flatten()[1] = 100
>>> print(x)
[[1 2]
[3 4]]
>>> x.ravel()[1] = 100
>>> print(x)
[[ 1 100]
[ 3 4]]
3. 判断[]
def pd(st):
if st:
print('不为空')
def pd2(st):
if not st:
print('不存在')
def pd1(st):
if st is None:
print('是 None')
pd(a) # 不返回任何内容,,即not st
pd1(a) # 不返回任何内容,即 not None
pd(2) # 返回“不存在”,即 not st
不为空
即’a = []’ 为’ if not a’ = true, 即满足 not a, 但是不满足 is None