啊啊啊啊啊吖

2019-03-14   阅读量: 632

数据分析师 Python编程

loc [index,col]和.loc [index]

扫码加入数据分析学习群

假设我有一个这样的数据帧,带有“密集”的第一列和“稀疏”的第二列:

# python 3.7.1, pandas 0.23.4.

import pandas as pd

df = pd.DataFrame({'col1':range(1,5), 'col2': [5, '', 7, '']})

missing_values_index = df[df['col2'] == ''].index

我尝试了两种方法将col1值分配给col2缺失值。

方法1(不起作用,df保持不变):

df.loc[missing_values_index]['col2'] = df.loc[missing_values_index]['col1']

方法2(工作正常):

df.loc[missing_values_index, 'col2'] = df.loc[missing_values_index, 'col1']

我认为这只是写同一件事的两种方式。有人能解释一下这里到底发生了什么吗?

解决办法:核心是当我们尝试将值分配给对象的副本而不是对象本身时。我可以像这样重写你的第一个方法:

something = df.loc[missing_values_index]

something['col2'] = df.loc[missing_values_index]['col1']

现在问题出现了。根据文档,不知道第一行是创建a view还是a copy。这就是它SettingWithCopy发出警告并阻止你分配的原因; 因为如果熊猫不能确定你的作业有效,它就不能让你这样做!

0.0000 0 4 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子