我希望这还没有被张贴,我还没有找到任何帮助我。所以我有这个数据框
Id Numero Voie CodePostal Commune \
1 940010005V-59 59 Rue d'Ablon 94480 Ablon-sur-Seine
2 940010005V-61 61 Rue d'Ablon 94480 Ablon-sur-Seine
3 940010005V-65 65 Rue d'Ablon 94480 Ablon-sur-Seine
Source Latitude Longitude \
1 C+O 48.721350 2.414291
2 C+O 48.722434 2.413538
3 OSM 48.721141 2.415030
Adresse AdresseGPS LatitudeGPS \
1 59 Rue d'Ablon, Ablon-sur-Seine, France 0.0
2 61 Rue d'Ablon, Ablon-sur-Seine, France 0.0
3 65 Rue d'Ablon, Ablon-sur-Seine, France 0.0
LongitudeGPS
1 0.0
2 0.0
3 0.0
我从csv导入它,并使用
df = df.assign(AdresseGPS="",LatitudeGPS = 0.,LongitudeGPS = 0.)
我要做的是使用函数修改最后三列
def funcRow(dataIn):
dataOut = dataIn
dataOut['AdresseGPS'] = 't'
dataOut['LatitudeGPS'] = 1
return(dataOut)
但是当我这么做的时候
df.ix[1,] = funcRow(df.ix[1,])
我得到以下错误:索引器错误:元组索引超出范围
我都印了
df.ix[1,] & funcRow(df.ix[1,])
我得到以下信息:
print df.ix[1,]
Id 940010005V-59
Numero 59
Voie Rue d'Ablon
CodePostal 94480
Commune Ablon-sur-Seine
Source C+O
Latitude 48.7214
Longitude 2.41429
Adresse 59 Rue d'Ablon, Ablon-sur-Seine, France
AdresseGPS
LatitudeGPS 0
LongitudeGPS 0
Name: 1, dtype: object
print funcRow
Id 940010005V-59
Numero 59
Voie Rue d'Ablon
CodePostal 94480
Commune Ablon-sur-Seine
Source C+O
Latitude 48.7214
Longitude 2.41429
Adresse 59 Rue d'Ablon, Ablon-sur-Seine, France
AdresseGPS t
LatitudeGPS 1
LongitudeGPS 0
Name: 1, dtype: object
我对在Python中使用数据帧非常陌生,所以我提供了很多细节,不确定是否所有内容都相关。我曾尝试过使用loc或iloc等其他函数来代替ix,但仍然得到相同的错误。 任何建议都非常欢迎:)
我认为解决这个问题的“最安全”方法是使用.loc[]而不是.ix[]。你知道吗
试试这个:
(如果您不习惯.loc[]:第一个参数是行选择,第二个参数是列选择,giving“:”表示您选择了全部)。你知道吗
当我运行上面的代码时,我得到一条警告消息,但是如果我打印df,它会返回更新的数据帧。你知道吗
(另一个好处是:这篇博文是学习loc、iloc和ix:http://www.shanelynn.ie/select-pandas-dataframe-rows-and-columns-using-iloc-loc-and-ix/的绝佳参考)
这应该起作用:
我可能需要看一下源代码,看看为什么下面的代码不起作用:
根据文件
.ix[]支持混合整数和基于标签的访问。它主要是基于标签的,但会退回到整数位置访问,除非相应的轴是整数类型。你知道吗
我认为您希望访问整个数据帧值的最后三列。你知道吗
如果是你可以试试
或者
或者如果你只想访问特定的行,那么你可以使用这个
我希望它能帮助你解决你的问题。你知道吗
相关问题 更多 >
编程相关推荐