将pandas列拆分为两个

时间:2015-07-31 04:09:53

标签: python pandas dataframe

还有其他类似的问题,但不同之处在于我的数据框已经有很多列,其中只有一列需要拆分。

我有一个大型数据帧(数百列,数百万行)。当在字符串中找到一个字符(" |")时,我想拆分其中一列。

所有值只有一个" |"。

对于固定长度,我会这样做:     df [' StateInitial'] = df [' state']。str [:2]

我希望我可以用string.index(" |")替换2,但是如何调用字符串?

4 个答案:

答案 0 :(得分:6)

怎么样:

df = pd.DataFrame(['a|b', 'c|d'])
s = df[0].apply(lambda x: x.split('|'))
df['left'] = s.apply(lambda x: x[0])
df['right'] = s.apply(lambda x: x[1])

输出:

     0 left right
0  a|b    a     b
1  c|d    c     d

答案 1 :(得分:1)

这是一个基于@santon提供的答案的单线:

df['left'],df['right'] = zip(*df[0].apply(lambda x: x.split('|')))

>>> df 
     0 left right
0  a|b    a     b
1  c|d    c     d

答案 2 :(得分:0)

首先,将新列值设置为等于旧列值。

接下来,创建一个新列,其值最初等于None。

现在,使用第一个有效值更新新列。

df['new_col1'] = df['old_col']
df['new_col2'] = None
df['new_col2'].update(df.new_col1.apply(lambda x: x.str.split('|')[1] 
                      if len(x.str.split()) == 2 else None))

答案 3 :(得分:0)

如果您有一列字符串,请使用定界符“ |”您可以使用以下行拆分列:

df['left'], df['right'] = df['combined'].str.split('|', 1).str

LeoRochael对如何在单独的线程上进行工作进行了深入的深入解释:https://stackoverflow.com/a/39358924/11688667