我想从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'
数据看起来像-
我使用这些列名['statusNY'、'statusPA'、'statusIL'、'statusOR'、'statusNJ']并从中提取状态名[NY、PA、IL或and NJ]。然后我将检查“产品代码”列是否包含这些状态名称。如果为true,则将1分配给“statusNY”;如果为false,则将0分配给“statusNY”。与其他列名“statusPA”、“statusIL”、“statusOR”、“statusNJ”类似
输出应如下所示:
我有以下代码:
^{pr2}$理想情况下,第二行应该创建一个通过第三行和第四行传递的列表。但这行不通。在
然后我想把这个单子加上去-
newlist = []
for col in ['statusNY', 'statusPA', 'statusIL', 'statusOR', 'statusNJ']:
newlist.append[col[6:8]]
但最终得到了这样的错误:TypeError:“builtin_function”或“u method”对象不可订阅。我在谷歌上搜索了一下,也查了其他相关的帖子,但结果与我的案例不太相关。在
为什么不是这样的,它使用pipe?在
这将创建一个函数来标记所需的任何状态,并将列附加到原始数据帧。在
这就是说,您将得到一些意外的结果;具体地说,您的数据中第5行的product_code值为“11MNYY”将标记为NY。如果您知道product_类型的格式始终与示例数据中的格式相同,则可能需要检查product_类型的子字符串。在
将
append[col[6:8]]
更改为append(col[6:8])
append[blah]
正在试图从函数中获取元素相关问题 更多 >
编程相关推荐