Python 如何基于应用于另一列的条件设置DataFrames列值

Python 如何基于应用于另一列的条件设置DataFrames列值,python,pandas,Python,Pandas,我有一个数据框,我想在其中添加另一列,这取决于基于该特定单元格中其他列的值 我不断得到类型错误:字符串索引必须是整数,而不是str 这是我的dataframe:df,其中所有列的值都是字符串格式 ID Key _1 A _2 B, C _3 A _4 D, E _5 B, C 我的预期产出是 ID Key Name _1 A n0, n1 _2 B, C n2

我有一个数据框,我想在其中添加另一列,这取决于基于该特定单元格中其他列的值

我不断得到
类型错误:字符串索引必须是整数,而不是str

这是我的dataframe:df,其中所有列的值都是字符串格式

ID      Key
_1      A
_2       B, C
_3       A
_4       D, E
_5       B, C 
我的预期产出是

ID      Key      Name
_1       A        n0, n1
_2       B, C     n2
_3       A        n3
_4       D, E     n4
_5       B, C     n5, n6
以下是我所做的:

df[df['ID'].str.contains('1')]['Name'] = 'n0, n1' that gave me Type Error.
注意,这里的id匹配是一个有意的子字符串匹配

尝试使用
numpywhere
,但这也给了我同样的错误。我跟着


基于列值子集设置新列值的正确方法是什么。此外,我将在后面介绍所有值,其中我对每个
ID执行此操作(此处从1到5)。

以下内容对我有用:

df.loc[df['ID'].str.contains('1'), 'Name'] = 'n0, n1'
基本上,您需要使用.loc[row_index,col_index]=val来修改现有的数据帧

使用df[row_index][col_index]只会创建我相信的值的副本

这也是假设您已经定义了列:

df['Name'] = pd.Series()

以下几点对我很有用:

df.loc[df['ID'].str.contains('1'), 'Name'] = 'n0, n1'
基本上,您需要使用.loc[row_index,col_index]=val来修改现有的数据帧

使用df[row_index][col_index]只会创建我相信的值的副本

这也是假设您已经定义了列:

df['Name'] = pd.Series()

在预期的结果中,1是如何变成_1(和其他数字)的?@Valentino:很抱歉输入错误。我更正了。是
df['Name']=df['ID']。应用(你的函数)
你在搜索什么?_函数将ID作为输入,并返回该特定行中Name的值,以及如何将A、B等与n0、n1等关联起来?我看不出逻辑。@Raphael是的,它将ID的子字符串作为输入,并与ID列和返回名称的值相匹配。1在预期结果中如何变成_1(和其他数字)?@Valentino:很抱歉输入错误。我更正了。是
df['Name']=df['ID']。应用(你的函数)
你在搜索什么?_函数将ID作为输入,并返回该特定行中Name的值,以及如何将A、B等与n0、n1等关联起来?我看不到逻辑。@Raphael是的,它将ID的子字符串作为输入,并与ID列和返回名的值匹配。