假设我想要一个函数来更改DataFrame的给定行号中的命名列的值.
一种选择是找到列的位置并使用iloc,如下所示:
def ChangeValue(df, rowNumber, fieldName, newValue):
columnNumber = df.columns.get_loc(fieldName)
df.iloc[rowNumber, columnNumber] = newValue
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有办法一次性使用iloc和loc的魔法,并跳过手动转换.
有任何想法吗?
loc人们必须求助于要么一直使用整数位置iloc\xe2\x80\x94 如本答案中建议的那样,\xe2\x80\x94 要么一直使用普通位置loc,如下所示:
df.loc[df.index[[0, 7, 13]], \'column_name\']\nRun Code Online (Sandbox Code Playgroud)\n
我建议只是iloc结合使用Index.get_loc方法。例如:
df.iloc[0:10, df.columns.get_loc('column_name')]
Run Code Online (Sandbox Code Playgroud)
有点笨拙,但足够简单。
MultiIndex同时具有get_loc和get_locs它接受一个序列; 不幸的Index是似乎只有前者。
根据这个答案,
ix通常会尝试表现得像标签不在索引中一样loc,但又会回到iloc像标签不在索引中一样的表现。
所以你应该特别能够使用df.ix[rowNumber, fieldname]case type(df.index) != type(rowNumber)。
| 归档时间: |
|
| 查看次数: |
3602 次 |
| 最近记录: |