【发布时间】:2018-07-30 07:40:04
【问题描述】:
我正在处理我加载到 DataFrame 中的报告。报告的 SKU 列具有混合数据类型。我想根据单元格数据类型(str、int)将该列拆分为两个新列(SUBTOTAL 和 SKU)。
按照similar question 中的示例,我得到一个布尔列。好的
df['SUBTOTAL'] = df['SKU'].apply(lambda x: isinstance(x, str))
SKU AMOUNT SUBTOTAL
7 4410 1 False
8 4200 5 False
9 total 6 True
11 4250 0 False
12 4255 0 False
我在 Jupyter Notebook 中执行此操作。这就是让我发疯的事情。如果我首先调用上面的行,然后用df[]包装代码,然后重新运行那个单元格,我就会得到我想要的。
df['SUBTOTAL'] = df[df['SKU'].apply(lambda x: isinstance(x, str))]
SKU AMOUNT SUBTOTAL
7 4410 1 NaN
8 4200 5 NaN
9 total 6 total
11 4250 0 NaN
12 4255 0 NaN
但是当我重新启动并全部运行时,我得到一个键错误。
我几乎要在同一条线上跑两次,
df['SUBTOTAL'] = df['SKU'].apply(lambda x: isinstance(x, str))
df['SUBTOTAL'] = df[df['SKU'].apply(lambda x: isinstance(x, str))]
如何将混合类型的 DataFrame 拆分为两列?
最终结果应该是,
SKU AMOUNT SUBTOTAL
7 4410 1 NaN
8 4200 5 NaN
9 NaN 6 total
11 4250 0 NaN
12 4255 0 NaN
或者我可以添加一个新的 SKUb 列并删除、重命名等等。
【问题讨论】: