У меня проблема с методом assign, когда я хочу создать новый столбец из раскола другого столбца. Если я выберу значение метода split, я получу ошибку ValueError: длина значений не соответствует длине индекса. Если я просто применяю split, не выбирая (индекс) любое значение, я получаю новый столбец со списком внутри.Python метод pandas chaining: назначить столбец из strsplit
Вот выход, если я не индексируют выход метода разделенного
(
pd.DataFrame({
"Gene": ["G1", "G1", "G2", "G2"],
"Sample": ["H1_T1", "H2_T1", "H1_T1", "H2_T1"]
})
.assign(Timepoint = lambda x: x.Sample.str.split("_")[1])
)
Gene Sample Timepoint
0 G1 H1_T1 [H1, T1]
1 G1 H2_T1 [H2, T1]
2 G2 H1_T1 [H1, T1]
3 G2 H2_T1 [H2, T1]
Ниже приведен пример, где я хотел бы, чтобы выбрать T1 или значение T2 из колонки образца и выдает ошибку:
(
pd.DataFrame({
"Gene": ["G1", "G1", "G2", "G2"],
"Sample": ["H1_T1", "H2_T1", "H1_T1", "H2_T1"]
})
.assign(Timepoint = lambda x: x.Sample.str.split("_")[1])
)
ошибка, я получаю от этого:
/home/user/anaconda3/lib/python3.4/site-packages/pandas/core/series.py in _sanitize_index(data, index, copy)
2739
2740 if len(data) != len(index):
-> 2741 raise ValueError('Length of values does not match length of '
2742 'index')
2743
ValueError: Length of values does not match length of index
Wow, ok - Спасибо за решение! Я не понимаю, почему сложно .. – dmeu
OK обновится с объяснением – EdChum
Aha - Я вижу, спасибо за объяснение @EdChum! Я был уверен, что функция (split) выполняется для каждой строки, а не для всего кадра данных. Благодаря! – dmeu