首页 > 解决方案 > 2列的乘法结果因访问方法不同而不同

问题描述

这是 DataSet 的前 5 行:

DataFrame 的前 5 行

我正在尝试将 DataSet 的“BirthRate”和“InternetUsers”列的行相乘。但我不明白为什么当我使用 result1 和 result2 中的方法时它工作正常,但是当我使用 result3 的方法时,所有结果都变成“NaN”值。我也尝试过分别运行“dataSet[['BirthRate']].head()”和“dataSet[['InternetUsers']].head()”,但它们给出了正确的结果。但是为什么它们的乘法会给出“NaN”值!

result1和result2和result3代码的图片

标签: python-3.xpandas

解决方案


第一种和第二种方法是乘以Series,在最后一个多列DataFrame中,因此需要相同的列名进行对齐,否则得到NaNs:

dataset = pd.DataFrame({'A':list('abcdef'),
                        'B':[4,5,4,5,5,4],
                        'BirthRate':[7,8,9,4,2,3],
                        'InternetUsers':[1,3,5,7,1,0]})

print (type(dataset['BirthRate']))
<class 'pandas.core.series.Series'>

print (type(dataset[['BirthRate']]))
<class 'pandas.core.frame.DataFrame'>

print (dataset[['BirthRate']] * dataset[['InternetUsers']]
                                       .rename(columns={'InternetUsers':'BirthRate'}))

   BirthRate
0          7
1         24
2         45
3         28
4          2
5          0

详情

print (dataset[['BirthRate']])
   BirthRate
0          7
1          8
2          9
3          4
4          2
5          3

print(dataset[['InternetUsers']].rename(columns={'InternetUsers':'BirthRate'}))
   BirthRate
0          1
1          3
2          5
3          7
4          1
5          0

推荐阅读