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列和返回名的值匹配。