根据其他列条件用数据框中的另一个列表替换列表

时间:2019-03-03 15:35:21

标签: python list dataframe

我想在数据框中编辑一行,例如:

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值而不是索引来编辑行。

2 个答案:

答案 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']]})