Я хочу добавить элементы в панды DataFrame и иметь определенный элемент:
df =pd.DataFrame({'name':
["0;0;*;1;1...1...1;1;*;1;1","0;0;*;1;1...1...1;1;*;1;2"],
'name2':
["0;0;*;1;1...1...1;1;*;1;3","0;0;*;1;1...1...1;1;*;1;4"]})
>>> print(df)
name name2
0 0;0;*;1;1...1...1;1;*;1;1 0;0;*;1;1...1...1;1;*;1;3
1 0;0;*;1;1...1...1;1;*;1;2 0;0;*;1;1...1...1;1;*;1;4
Расщепление с "." к списку хорошо работает:
>>> print(df.apply(lambda x: x.str.split(".")))
name name2
0 [0;0;*;1;1, , , 1, , , 1;1;*;1;1] [0;0;*;1;1, , , 1, , , 1;1;*;1;3]
1 [0;0;*;1;1, , , 1, , , 1;1;*;1;2] [0;0;*;1;1, , , 1, , , 1;1;*;1;4]
По какой-то причине не так хорошо с "..." (которая на самом деле присутствует подстрока):
print(df.apply(lambda x: x.str.split("...")))
name name2
0 [, , , , , , , , 1] [, , , , , , , , 3]
1 [, , , , , , , , 2] [, , , , , , , , 4]
Кто-нибудь знает почему?
Но главная проблема в том, что я не знаю, как получить конкретный элемент из списка. Это дает только конкретную строку:
>>> print(df.apply(lambda x: x.str.split(".")[0]))
name [0;0;*;1;1, , , 1, , , 1;1;*;1;1]
name2 [0;0;*;1;1, , , 1, , , 1;1;*;1;3]
dtype: object
Этот подход будет работать, если я обработаю Dataframe по столбцу:
>>> print(df["name"].apply(lambda x: x.split(".")[-1]))
0 1;1;*;1;1
1 1;1;*;1;2
Name: name, dtype: objec
Я думал, что обработка сразу будет более эффективной и чистой?
Есть предложения?