首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据现有列中的值从列表中添加新列,可以使用for循环

根据现有列中的值从列表中添加新列,可以使用for循环
EN

Stack Overflow用户
提问于 2019-07-29 21:14:36
回答 1查看 49关注 0票数 0
代码语言:javascript
复制
                    OBJECT        STATE  SM4         
TIMESTAMP                                            
2017-10-31 11:09:09    SM4     Movement             1
2017-10-31 11:09:10    SM4     Movement             1
2017-10-31 11:09:11    SM4  No movement             0
2017-10-31 11:09:12    SM4  No movement             0
2017-10-31 11:09:13    SM4  No movement             0
2017-10-31 11:09:14    SM4  No movement             0
2017-10-31 11:09:15    SM4  No movement             0
2017-10-31 11:29:42    M01         Open             0
2017-10-31 11:29:43    M01         Open             0
2017-10-31 11:29:44    M01        Close             0

TIMESTAMP列是索引。OBJECTSTATESM4都是列。我使用以下代码添加了一个新的列SM4。如果STATE等于Movement,则它添加值1,否则为对象SM4添加值0

代码语言:javascript
复制
df['SM4'] = df.OBJECT.str.contains('SM4').astype(int) & df.STATE.str.contains('Movement').astype(int)

现在,在OBJECT列中,我有14个独特的传感器:'SM4', 'C14', 'SM3', 'M01', 'D07', 'C10', 'C08', 'C09', 'SM1', 'D10', 'D01', 'D02', 'D03', 'C12'

我想对所有传感器自动执行相同的操作,而不是手动创建每一列可能有一个循环,对于某些传感器,状态是OpenPressure而不是Movement

我如何在循环中做到这一点,以便根据代码中的条件自动添加所有列?

EN

回答 1

Stack Overflow用户

发布于 2019-09-09 00:04:49

我假设我的名为df的示例数据框如下所示:

代码语言:javascript
复制
  OBJECT        STATE
0    SM4     Movement
1    SM4     Movement
2    SM4  No movement
3    SM4  No movement
4    SM4  No movement
5    SM4  No movement
6    SM4  No movement
7    M01         Open
8    M01         Open
9    M01        Close

您可以迭代OBJECT列中的唯一值,并基于如下条件创建新列:

代码语言:javascript
复制
for obj in df['OBJECT'].unique():
    condition = (df['OBJECT']==obj) & (df['STATE'].isin(['Movement', 'Open', 'Pressure']))
    df[obj] = np.where(condition, 1, 0)

结果如下:

代码语言:javascript
复制
  OBJECT        STATE  SM4  M01
0    SM4     Movement    1    0
1    SM4     Movement    1    0
2    SM4  No movement    0    0
3    SM4  No movement    0    0
4    SM4  No movement    0    0
5    SM4  No movement    0    0
6    SM4  No movement    0    0
7    M01         Open    0    1
8    M01         Open    0    1
9    M01        Close    0    0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57254689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档