我在column1中有一个带有对象的数据帧。该对象每行包含多个值。我需要迭代对象中的所有值,但是我只能选择整行。如何选择对象行中的值?
数据帧:
d = {'column1': [{1,2,3},{4,5,6}]}
df = pd.DataFrame(d)
代码到目前为止:
df.column1.iloc[0]
这选择{1,2,3},但是我想只选择第一个元素1。
这里有必要将值转换为列表然后索引:
d = {'column1': [{1,2,3},{4,5,6}]}
df = pd.DataFrame(d)
print (df.column1.apply(lambda x: list(x)[0]))
0 1
1 4
Name: column1, dtype: int64
或者使用next
和iter
:
print (df.column1.apply(lambda x: next(iter(x))))
优势也适用于空set
s - 可能设置默认值:
d = {'column1': [{1,2,3},{4,5,6}, {}]}
df = pd.DataFrame(d)
print (df.column1.apply(lambda x: next(iter(x), 'no match')))
0 1
1 4
2 no match
Name: column1, dtype: object