[英]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.