2016-12-10 3 views
0

У меня есть панд dataframe, который выглядит следующим образом:Извлечение из dataframe

letter;Pairs;Count 
abandon;frozenset(['abandon', 'dm']);1 
abattoir;frozenset(['abattoir', 'year']);1 
abbey;frozenset(['abbey', 'mean']);1 

Я хочу написать в формате CSV, который выглядит как:

abandon;dm 
abbattoir;year 
abbey;mean 

Стандартный выбор панды dataframe, кажется, не работает поскольку frozenset усложняет ситуацию.

+0

Откажитесь от моего последнего вопроса без ответа на ваш последний вопрос без использования фенилзаметра [мой обновленный ответ] (http://stackoverflow.com/a/41076638/3707607). –

ответ

2

Я предполагаю, что первая строка в кадре данных является строкой заголовка, так что:

print(df) 

    letter    Pairs Count 
0 abandon  (dm, abandon)  1 
1 abattoir (abattoir, year)  1 
2  abbey  (abbey, mean)  1 

(круглые скобки вокруг элементов Pairs в том, как панды печатает frozensets)

Вы можете изменить это в кадр данных, называемый df2 который выглядит следующим образом:

 letter Pairs 
0 abandon dm 
1 abattoir year 
2  abbey mean 

Поступая:

df2 = pd.DataFrame([df['letter'],(df['Pairs']-set(df['letter'])).str.join('')]).T 

Это работает, сначала сделав set difference между вашим столбцом letter и Pairs, чтобы получить элемент в вашем frozenset t шляпа нет такой же как элемент в letter. Затем вы можете создать новый DataFrame с использованием этого элемента и элементов в столбце letter. Наконец, вы переносите это DataFrame, чтобы ориентироваться так, как вы хотите.

0

Я думаю, что

print(X.apply(lambda x: ";".join(x[1]),axis=1).to_csv(index=False)) 

или

print(X.apply(lambda x: ";".join(x.Pairs),axis=1).to_csv(index=False)) 

где X ваша dataframe может работать

Смежные вопросы