我想在数据框中编辑一行,例如:
index columnA ColumnB
0 1 [a, b]
1 3 [c, b]
2 4 [a, b]
3 6 [d, a, b]
让我们说我想用[q,y]替换[c,b],其中columnA为值3。 我将如何去做。我尝试了以下方法:
df.at[df['columnA'] == 3, 'ColumnB'] = [q, y]
都是列,我想根据columnA值而不是索引来编辑行。
答案 0 :(得分:1)
数据帧通常如下引用。假设您的数据框称为df
df.loc[row_name, column_name] = val
或者,
df.iloc[row_index, column_index] = val
.loc使用显式列名/行名,.iloc使用数字索引(就像numpy或列表一样)。
因此,在您的示例中,假设您没有更改默认索引,并且假设两列实际上都是数据列,而不是索引
df.loc[2, 'ColumnB'] = [q,y]
或相等地
df.iloc[2, 1] = [q,y]
但是,对于数据框,在引用值时,索引与列一样重要。从您的问题来看,您不清楚用作索引的内容以及实际的数据列是什么。
编辑:
可以通过使用Dataframe.at来克服ValueError,即尝试
df.at[2, 'ColumnB'] = [q,y]
答案 1 :(得分:1)
您可以尝试这个。让我知道它是否有效
df.loc[(df['columnA'] == 3),'columnB']= '[p, q]'
数据框是使用
创建的df = pd.DataFrame({'columnA': [1, 3, 4, 6],'columnB': [['a','b'],['c','b'],['a','b'],['a','b']]})