[英]Python pandas split column with NaN values
您好我亲爱的编码员,
我是编码新手,却偶然发现了一个问题。 我想分割通过Python在熊猫中导入的csv文件的列。 列名称为CATEGORY
,包含1、2或3个这样的值,这些值之间用逗号分隔(即:2343、3432、4959)。现在,我想将这些值拆分为名为CATEGORY
, SUBCATEGORY
和SUBSUBCATEGORY
单独列。
我已经尝试了以下代码行:
products_combined[['CATEGORY','SUBCATEGORY', 'SUBSUBCATEGORY']] = products_combined.pop('CATEGORY').str.split(expand=True)
但我收到此错误: ValueError: Columns must be same length as key
很想听听您的反馈<3
你需要:
pd.DataFrame(df.CATEGORY.str.split(',').tolist(), columns=['CATEGORY','SUBCATEGORY', 'SUBSUBCATEGORY'])
输出:
CATEGORY SUBCATEGORY SUBSUBCATEGORY
0 2343 3432 4959
1 2343 3432 4959
我认为可以通过创建三个新列并将每个列分配给应用于“ CATEGORY”列的lambda函数来实现。 像这样:
products_combined['SUBCATEGORY'] = products_combined['CATEGORY'].apply(lambda original: original[1] if len(original) > 1 else None)
products_combined['SUBSUBCATEGORY'] = products_combined['CATEGORY'].apply(lambda original: original[2] if len(original) > 2 else None)
products_combined['CATEGORY'] = products_combined['CATEGORY'].apply(lambda original: original[0])
在序列上调用的apply()
方法将返回一个新序列,该序列包含在原始序列的每一行上运行传递的函数(在本例中为lambda函数)的结果。
IIUC,使用split
然后使用Series
:
(
df[0].apply(lambda x: pd.Series(x.split(",")))
.rename(columns={0:"CATEGORY", 1:"SUBCATEGORY", 2:"SUBSUBCATEGORY"})
)
CATEGORY SUBCATEGORY SUBSUBCATEGORY
0 2343 3432 4959
1 1 NaN NaN
2 44 55 NaN
数据:
d = [["2343,3432,4959"],["1"],["44,55"]]
df = pd.DataFrame(d)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.