当“subscripting”函数在“not u”函数内时,返回错误

2024-09-28 17:00:19 发布

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

我想从for循环中的现有列表创建一个新列表,然后通过if-else语句传递该列表,一次传递一个元素。我不知道用这种方式使用列表。因此这篇文章

样本数据:

f = {'Sales_Person': ['John', 'Tom', 'Dick', 'Harry', 'Rob', 'Mike', 'Miz', 'Sally', 'Buck', 'Roger'],  'location': ['NY', 'NY', 'NY', 'NJ', 'PA', 'NJ', 'NJ', 'PA', 'NY', 'NJ'], 'product_code': ['10NYXX', '11NYXX', '10NYXX', '10NJXY', '11PAXY', '11MNYY', '12NJYX', '11PAYY', '12NYXX', '11CAPQ']}
df1 = pd.DataFrame(data = f)
df1['statusNY'] = 'n/a'
df1['statusPA'] = 'n/a'
df1['statusIL'] = 'n/a'
df1['statusOR'] = 'n/a'
df1['statusNJ'] = 'n/a'

数据看起来像-

enter image description here

我使用这些列名['statusNY'、'statusPA'、'statusIL'、'statusOR'、'statusNJ']并从中提取状态名[NY、PA、IL或and NJ]。然后我将检查“产品代码”列是否包含这些状态名称。如果为true,则将1分配给“statusNY”;如果为false,则将0分配给“statusNY”。与其他列名“statusPA”、“statusIL”、“statusOR”、“statusNJ”类似

输出应如下所示:

enter image description here

我有以下代码:

^{pr2}$

理想情况下,第二行应该创建一个通过第三行和第四行传递的列表。但这行不通。在

然后我想把这个单子加上去-

newlist = []
for col in ['statusNY', 'statusPA', 'statusIL', 'statusOR', 'statusNJ']:
    newlist.append[col[6:8]]

但最终得到了这样的错误:TypeError:“builtin_function”或“u method”对象不可订阅。我在谷歌上搜索了一下,也查了其他相关的帖子,但结果与我的案例不太相关。在


Tags: 数据代码列表for状态df1pany
2条回答

为什么不是这样的,它使用pipe?在

def flag_product_code(df, states):
    df = df.copy()

    for state in states:
        df['status' + state] = (df.product_code
                                  .str.contains(state)
                                  .astype(int))

    return(df)

df1.pipe(flag_product_code, ['NY', 'PA', 'IL', 'OR', 'NJ'])

这将创建一个函数来标记所需的任何状态,并将列附加到原始数据帧。在

这就是说,您将得到一些意外的结果;具体地说,您的数据中第5行的product_code值为“11MNYY”将标记为NY。如果您知道product_类型的格式始终与示例数据中的格式相同,则可能需要检查product_类型的子字符串。在

append[col[6:8]]更改为append(col[6:8])

append[blah]正在试图从函数中获取元素

相关问题 更多 >