我有一个现有的解决方案,可以将一个只有一列的数据框拆分成两列。
df['A'], df['B'] = df['AB'].str.split(' ', 1).str
最近,我收到了以下警告 FutureWarning: Columnar iteration over characters will be deprecated in future releases.
如何解决这个警告?
我正在使用python 3.7
我有一个现有的解决方案,可以将一个只有一列的数据框拆分成两列。
df['A'], df['B'] = df['AB'].str.split(' ', 1).str
最近,我收到了以下警告 FutureWarning: Columnar iteration over characters will be deprecated in future releases.
如何解决这个警告?
我正在使用python 3.7
这并不完全正确,另外末尾的.str
没有意义。因为split
与expand
一起返回一个DataFrame,所以这样更容易:
这并不是完全正确的,而且末尾的.str
没有意义。由于使用split
和expand
可以返回一个DataFrame,所以这样更简单:
df[['A', 'B']] = df['AB'].str.split(' ', n=1, expand=True)
您现有的方法没有使用 expand
,它返回一个包含列名列表的单个 Series。我不确定您在编写代码时使用了哪个版本的 pandas,但据我所知,如果要在当前的 pandas(>= 1.0)中使其正常工作,您需要进行一些调整。以这种方式进行赋值比较繁琐,但仍然是可能的。
s = df['AB'].str.split(' ', n=1)
df['A'], df['B'] = s.str[0], s.str[1]
我更喜欢使用expand
解决方案,因为它比较短。
或者我们这样做
df['A'], df['B']=zip(*df['AB'].str.split(' ').tolist())
df
AB A B
0 A B A B
1 A B A B
2 A B A B
3 A B A B