[英]Traceback when using pandas.Series.str.split: Must have equal len keys and value when setting with an iterable
[英]How to make pandas.Series.str.split work with empty dataset
我有以下代码将值形式为“ ab”的一列拆分为值“ a”和“ b”的两列:
df[['name', 'value']] = df['value'].str.split('-', n=1, expand=True)
当我得到“列必须与键的长度相同”时,它可以正常工作,直到df
为空。
有没有办法完美地处理这种情况,而无需明确检查是否为空?
我认为这是在value
列的所有值中没有分隔符的问题,因此输出仅为1列DataFrame
:
df = pd.DataFrame({'value':['', 'ab']})
print ( df['value'].str.split('-', n=1, expand=True))
0
0
1 ab
如果始终需要在输出中填充第一列的两列DataFrame,则添加list=[1,0]
DataFrame.reindex
:
df[['name', 'value']] = df['value'].str.split('-', n=1, expand=True).reindex([1,0], axis=1)
print (df)
value name
0 NaN
1 ab NaN
如果需要按数据填充第二列:
df = pd.DataFrame({'value':['', 'ab']})
df1 = pd.DataFrame(columns=[0,1])
df[['name', 'value']] = df['value'].str.split('-', n=1, expand=True).append(df1)
print (df)
value name
0 NaN
1 NaN ab
或者在DataFrame.reindex
列表更改为[0,1]
:
df = pd.DataFrame({'value':['', 'ab']})
df[['name', 'value']] = df['value'].str.split('-', n=1, expand=True).reindex([0,1], axis=1)
print (df)
value name
0 NaN
1 NaN ab
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.