1 回答

TA贡献1786条经验 获得超13个赞
我建议使用str索引器,如果由于值不存在而不匹配,则返回NaN:
#if need slect first tuple
df['new'] = df['Match'].str[0]
#if need select second tuple and first element of tuple
df['new'] = df['Match'].str[1].str[0]
样品:
a = [[('word1','','','')],
[('word2','','',''),('word1', )],
[('word2','','',''),('word1', ),('word3','','','')]]
df = pd.DataFrame({'ID':[1,2,3], 'Match':a})
df['new1'] = df['Match'].str[0]
df['new2'] = df['Match'].str[1].str[0]
print (df)
ID Match new1 new2
0 1 [(word1, , , )] (word1, , , ) NaN
1 2 [(word2, , , ), (word1,)] (word2, , , ) word1
2 3 [(word2, , , ), (word1,), (word3, , , )] (word2, , , ) word1
编辑:
如果值是字符串,请使用ast.literal_eval:
import ast
df['Match'] = df['Match'].astype(str)
df['Match'] = df['Match'].apply(ast.literal_eval)
df['new2'] = df['Match'].str[0]
print (df)
ID Match new2
0 1 [(word1, , , )] (word1, , , )
1 2 [(word2, , , ), (word1,)] (word2, , , )
2 3 [(word2, , , ), (word1,), (word3, , , )] (word2, , , )
添加回答
举报