我有下面的数据框。需要在<div id="container">
<div id="text-container">
<header>
<h1>Title Container</h1>
</header>
<article>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis nisl magna. Nunc pharetra varius dui eu fermentum. Quisque ut neque velit. Pellentesque massa sapien, consectetur non dui eu, consequat commodo ante. Phasellus ac lectus nec justo fermentum congue non sed ex. Aenean in tortor ac eros maximus rhoncus a in nulla. Fusce ultricies ipsum vel lacus pulvinar, auctor ultrices leo porta. Donec eu metus sit amet erat hendrerit vehicula in eget lacus.
</article>
<footer>
<a href="">Contact Me</a>
</footer>
</div>
<div id="icon-container">
<img
itemprop="image"
src="https://dinesh-ghimire.com.np/wp-content/uploads/2019/02/html5.png"
height="200"
width="200"
alt="image"/>
</div>
</div>
中创建第三列,并将所有bool值添加到该列中
bool
答案 0 :(得分:1)
这不是访问列中词典的方法。解决此问题的一种方法是使用Series.apply
:
df['Bool'] = df['col2'].apply(lambda x: x['result']['is_doc1']['bool'])
col2 Bool
0 {'result': {'is_doc1': {'bool': True}}} True
1 {'result': {'is_doc1': {'bool': False}}} False
答案 1 :(得分:1)
这是一个对象列,它应该支持.str
访问器方法:
df['col3'] = df['col2'].str['result'].str['is_doc1'].str['bool']
df
col2 col3
0 {'result': {'is_doc1': {'bool': True}}} True
1 {'result': {'is_doc1': {'bool': False}}} False
您还可以使用列表理解:
[x['result']['is_doc1']['bool'] for x in df['col2']]
# [True, False]
df['col3'] = [x['result']['is_doc1']['bool'] for x in df['col2']])
df
col2 col3
0 {'result': {'is_doc1': {'bool': True}}} True
1 {'result': {'is_doc1': {'bool': False}}} False
如果“ col2”是一列字符串,请首先对其进行解析:
import ast
df['col2'] = df['col2'].map(ast.literal_eval)
这是一个更强大的版本:
def try_parse(string):
try:
return ast.literal_eval(string)
except ValueError, SyntaxError:
return np.nan
df['col2'] = df['col2'].map(try_parse)