繁体   English   中英

如何使pandas.Series.str.split与空数据集一起使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM