从数据框中提取

时间:2016-12-10 21:12:35

标签: python pandas

我有一个像这样的pandas数据框:

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

标准pandas数据框选择似乎不起作用,因为frozenset使事情变得复杂。

2 个答案:

答案 0 :(得分:2)

我假设数据框中的第一行是标题行,所以:

print(df)

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

Pairs中元素周围的圆括号是pandas如何打印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

这首先在您的letterPairs列之间执行set difference,以便让frozenset中的元素letter中的元素相同。然后,您可以使用此元素和DataFrame列中的元素创建新的letter。最后,您转置DataFrame以便按照您想要的方式进行定位。

答案 1 :(得分: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是您的数据框可能有效