繁体   English   中英

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

[英]Replace list with another list in dataframe based on another column condition

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

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

数据帧通常如下引用。 假设您的数据框称为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]

你可以试试这个。 让我知道是否有效

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM