Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

pandas中apply的一个问题

以下语句,目的是求data中每一行的数据是否完全一样,
tag = data.apply(lambda x: (x == np.mean(x)).all(), axis=1)
当数据量在15万以下时,没有什么问题
但当跑到20万数据时,
报type error错:
TypeError: can only concatenate str (not "int") to str
当然,数据我保证都是 INT
而且,以下语句
print(sub_data.isna().any().any())
输出为 False
这是为什么呢?

而语句
tag = (data.T.mean() == data.T).all()
表现无异常

原因找到了:是数据中存在str
df.mean() 操作时,存在类型为object的数据不会输出,所以,某列数据为object时,df.T之后再做mean操作,返回的时空series,尽管语句
(data.T.mean() == data.T).all()
没有报错,但其返回值都为False

语句tag = data.apply(lambda x: (x == np.mean(x)).all(), axis=1)
报错,就好理解了


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...