我有一个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]
但这在熊猫中不起作用,有没有办法做到这一点,还是我必须以不同的方式转换数据?
答案 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