对于不同的访问方法,2列的乘法结果是不同的

时间:2018-05-02 11:09:19

标签: python-3.x pandas

这里是DataSet的前5行:

First 5 Rows of the DataFrame

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

Picture of result1 and result2 and result3 Code

1 个答案:

答案 0 :(得分:1)

第一个和第二个方法多个Series,在最后一个多列的一列DataFrame中,因此需要相同的列名称进行对齐,否则获取NaN s:

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