熊猫分裂不起作用

时间:2017-09-08 13:04:45

标签: python pandas split

它可能不是最聪明的问题,但我不知道为什么通常的拆分函数会在pandas中返回空单元格。以下是我尝试过的几件事: 第一:

import pandas as pd
import pickle
df1 = pd.read_pickle('output.p')
try:
    df1['being_remixed'] = df1['file_names'].str.map(lambda x: x.split('by')[1]) # Also tried without str
except:
    df1['being_remixed'] = ""

第二

def splitter(z):
    try:
        a = z.map(lambda x: x.split('by')[1])
    except:
        a = ""
    return a
df1['being_remixed'] = df1['file_names'].apply(splitter) 

file_names列上的字符串看起来像这样: “StrandbeestInspiredWalkingMachinebydanowall --- -1043007.jpg”或 “DetailedAlienHead --- -1913632.jpg” 当我使用“---_-”进行分割时,它可以工作。我怎么能解决我的问题?

1 个答案:

答案 0 :(得分:3)

对于每个列表的选择第二个值,str.split的字符串列表需要indexing with str,如果一个项目列表返回df1['being_remixed'] = df1['file_names'].str.split('by').str[1].fillna('') ,则需要fillna:< / p>

df1 = pd.DataFrame({'file_names':['WalkingMachinebydanowall----1043007.jpg',
                                  'DetailedAlienHead----1913632.jpg']})

print (df1)
                                file_names
0  WalkingMachinebydanowall----1043007.jpg
1         DetailedAlienHead----1913632.jpg

df1['being_remixed'] = df1['file_names'].str.split('by').str[1].fillna('')

print (df1)
                                file_names            being_remixed
0  WalkingMachinebydanowall----1043007.jpg  danowall----1043007.jpg
1         DetailedAlienHead----1913632.jpg                         

样品:

print (df1['file_names'].str.split('by'))
0    [WalkingMachine, danowall----1043007.jpg]
1           [DetailedAlienHead----1913632.jpg]
Name: file_names, dtype: object

print (df1['file_names'].str.split('by').str[1])
0    danowall----1043007.jpg
1                        NaN
Name: file_names, dtype: object

说明:

slurp1.keySet() == slurp2.keySet()