用formu将值复制到新列

2024-09-30 02:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了以下DataFrame

  geo col1  col2
0  CA    A     1
1  CA    A     2
2  CA    B     1
3  CA    B     2
4  CA    B     1
5  CA    C     1
6  CA    C     2

我的目标是创建一个新的column,从col2ifcol2 == 1复制值,从col1ifcol2 == 2复制值

geo列包含在图片中,因为最终我想创建一个if语句,它对美国15-20个州的上述操作略有不同

最终目标如下:

  geo col1  col2 col3
0  CA    A     1    1
1  CA    A     2    A
2  CA    B     1    1
3  CA    B     2    B
4  CA    B     1    1
5  CA    C     1    1
6  CA    C     2    C

Tags: 目标dataframeif图片column语句cacol2
3条回答

您可以将条件复制语句包装到函数中,以使各种情况更易于管理(see docs)

def copy_function(row):
    if row['col2']==1:
        return row['col2'] 
    else: 
        return row['col1']
df['col3'] = df.apply(copy_function, axis=1)

您可以使用列表:

df['col3'] = [c2 if c2 == 1 else (c1 if c2 == 2 else None) 
              for c1, c2 in zip(df.col1, df.col2)]

>>> df
  geo col1  col2 col3
0  CA    A     1    1
1  CA    A     2    A
2  CA    B     1    1
3  CA    B     2    B
4  CA    B     1    1
5  CA    C     1    1
6  CA    C     2    C

考虑到您在评论中陈述的例外情况,您还可以使用iterrows

df['col3'] = None
for n, row in df.iterrows():
    if row.col2 == 1:
        df.ix[n, 'col3'] = row.col2
    elif row.col2 == 2:
        df.ix[n, 'col3'] = row.col1
    # Other cases.

希望这有帮助

for row in rows:
    row['col3'] = row['col1'] if row['col2'] == 2 else row['col2']

相关问题 更多 >

    热门问题