【发布时间】:2015-08-27 20:27:06
【问题描述】:
假设我想要一个函数来更改 DataFrame 的给定行号中命名列的值。
一种选择是找到列的位置并使用 iloc,如下所示:
def ChangeValue(df, rowNumber, fieldName, newValue):
columnNumber = df.columns.get_loc(fieldName)
df.iloc[rowNumber, columnNumber] = newValue
但我想知道是否有一种方法可以一次性使用 iloc 和 loc 的魔力,并且跳过手动转换。
有什么想法吗?
【问题讨论】:
-
为什么需要 columnIndex?
df.loc[rowIndex, fieldName] = newValue不会工作吗? -
很抱歉给您带来了困惑。 “索引”这个词具有误导性,所以我改变了它。假设索引在这里不相关。
-
事实仍然是你为什么需要这个,如果你的 df 索引值已经由
rowNumber表示并且fieldName已经是一个列,那么我的第一条评论就可以了 -
索引在这里无关紧要。示例:我想更改每个组的第一行中的一个字段。应用函数 f(在 df.groupby(...).apply(f) 中)可以使用 .iloc[0] 并且不知道索引(在这种情况下是分组字段)。
-
我不认为你可以这样做,因为索引方法专门用于整数(iloc)或基于标签的(loc)索引,如果你开始混合两种样式,那么你必须转换整数标签做你想做的事