如何从pandas dataframe列中的元组中的一个位置获取所有值?

时间:2016-07-21 07:54:28

标签: python numpy pandas

我有一个pandas数据框,其中有几列用元组填充,每个元组有两个值,混合类型。

示例:

handle

这是正常输出:

import pandas as pd

D = [{'A':1,'B':'Test1','C':('C1',True)},\
     {'A':2,'B':'Test2','C':(77,u'orz')},\
     {'A':3,'B':'Test3','C':(u'ASDFG',[1,2,3])}]

F = pd.DataFrame.from_dict(D)

print F

我想要的是例如C列中每个元组的第二个值,即输出,如:

    A      B                   C
0  1  Test1          (C1, True)
1  2  Test2           (77, orz)
2  3  Test3  (ASDFG, [1, 2, 3])

在Numpy你可以这样做:

True, orz, [1,2,3]

给你:

import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
print A[:,0]

但这在熊猫中不起作用,有没有办法做到这一点,还是我必须以不同的方式转换数据?

2 个答案:

答案 0 :(得分:2)

一种方法是使用列表推导并提取元组对中的第二项。

>>> [tup[1] for tup in F.C]
[True, u'orz', [1, 2, 3]]

答案 1 :(得分:1)

如果您喜欢留在熊猫DafaFrame / Series域中:

F.C.apply(lambda x: x[-1])

返回:

>>> F.C.apply(lambda x: x[-1])
0         True
1          orz
2    [1, 2, 3]
Name: C, dtype: object