用python在list/dataframe中嵌套

2024-09-30 03:25:33 发布

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

我有一个数据帧,其中有df['kVA']df['Phase']列。我正在尝试创建一个列df['Line'],但使用以下条件:

  1. 按阶段定义行

    df['Line']=['1PH' if x=='1PH' else '3PH' for  x in df['Phase'] ]
    
  2. 按相位定义线路;kVa-期望输出

    df['Line']=['1PH' if x=='1PH' else ['3PHSM' if y<=750 else '3PHLG' for y in df['kVA']] for  x in df['Phase'] ]
    

按阶段定义的代码工作。但是如果我尝试集成嵌套的,如果代码停止。我正在尝试将产品按相位和kVA特性分类到生产线。kVA和Phase都是我的数据框中的列(如附件所示)

我怎样才能解决这个问题

Data frame overview


Tags: 数据代码indfforif定义line
2条回答

熊猫是一个伟大的工具。我会这样做:

# create some similar data
import pandas as pd
df = pd.DataFrame({'Phase': ['1PH', '3PH', '3PH', '1PH'], 'kVA': [50, 750, 300, 37.5]})

# add a new column (some elements will not change)
df['Line'] = df['Phase']
# modify rows that fit your criteria
df.loc[ (df.kVA < 750) & (df.Phase == '3PH'), 'Line'] += 'SM'
df.loc[ (df.kVA >= 750) & (df.Phase == '3PH'), 'Line'] += 'LG'

.lociloc非常适合过滤数据帧的一部分

注意:我正在使用Pandas v0.20.3进行此测试

要以更像熊猫的方式来做这件事,你可能需要做更多这样的事情:

one_phase = df['Phase'] == '1PH'
small = df['kVA'] <= 750

df['Line'][one_phase] = '1PH'
df['Line'][~one_phase & small] = '3PHSM'
df['Line'][~one_phase & ~small] = '3PHLG'

注意:您没有留下任何可分析的样本数据,因此未对其进行测试

相关问题 更多 >

    热门问题