它可能不是最聪明的问题,但我不知道为什么通常的拆分函数会在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” 当我使用“---_-”进行分割时,它可以工作。我怎么能解决我的问题?
答案 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()