pandas dataframe 乘法得到nan

  统计/机器学习 Python    浏览次数:935        分享
0

为啥在i=1 j=0 相乘就错了

df.iloc[i*4:i*4+4,j]*m1

这个时候乘法结果是8个值

import pandas as pd
import numpy as np
df =  pd.DataFrame(np.ones((16,4)))

m0 = pd.DataFrame(np.arange(4))
m = pd.DataFrame(np.zeros((4,4)))
for i in range(4):
	m.iloc[:,i] = m0
	
m1 = m.iloc[:,0]

df2 = pd.DataFrame(np.zeros_like(df))

for i in range(4):
	for j in range(4):
		tmp =  df.iloc[i*4:i*4+4,j]
		df2.iloc[i*4:i*4+4,j] = df.iloc[i*4:i*4+4,j]*m1

print(df2)


 

constant007   2022-05-16 14:12



   1个回答 
0

pandas的乘法是要index对应的,index不对应,当然会有问题啊

i, j = 1, 0
display(df.iloc[i*4:i*4+4,j])

得到的结果的Index是4,5,6,7

m1的Index是0,1,2,3

两者没有交集,乘出来的结果的Index是0,1,...,7,而且全都是NaN

正确的操作应该是转成numpy array再相乘

df.iloc[i*4:i*4+4,j].values * m1.values


SofaSofa数据科学社区DS面试题库 DS面经

黑泽先生   2022-05-16 16:20



  相关讨论

怎么提取pandas dataframe中某一列每个字符串的前n个字符?

如何将dict字典转成pandas dataframe,key和value分别成为一列?

把pandas.DataFrame中所有行全部随机排列

怎么对pandas dataframe按照一列的字符串的长度来排序?

如何对pandas dataframe的行做循环?

怎么添加pandas的dataframe到已有的csv文件,并且不覆盖原内容

pandas pop KeyError求帮助!

使用pandas.to_datetime转化文本到时间戳时怎么只保留日期?

pandas变形

pandas dataframe insert报错ValueError: unbounded slice

  随便看看

什么是混淆矩阵(confusion matrix)

线性可分是什么意思?

sklearn训练classifier的时候报错Unknown label type

Data Application Lab怎么样?

怎么把pandas dataframe中的一列转成一个list?