如何解决如何附加包含在嵌套列表中的多个字典值
我正在尝试附加包含在嵌套列表中的多个字典值,如下所示,但没有获得预期的输出。
library(dplyr)
library(ggplot2)
df <- transmute(
iris,Location = Species,Date = as.Date(as.character(
cut(Sepal.Length,breaks = 3,labels = c("2019-07-10","2019-07-12","2019-07-15")))),Weight = Sepal.Width)
ggplot(data = df,mapping = aes(x = Date,y = Weight,colour = Location)) +
stat_summary(fun = "mean",geom = "line") +
theme_bw()
预期输出应如下所示:
lst = [[{'A': 'abc1'}],[{'A': 'xyz'},{'2 ': '123'}],[{'A': 'abc2'},{'B': 'abc14'}],[{'X': 'abc3'},{'B': 'abc4'},{'4': 'abc10'},{'': '123dfghfh'}]]
import pandas as pd
result = []
for wrd in lst:
for dct in wrd:
vl_check = [val for val in dct.values() if 'abc' in val]
result.append(','.join(vl_check) if vl_check else 'NA')
data = {'Result': result}
final_result = pd.DataFrame(dict([(k,pd.Series(v)) for k,v in data.items()]))
解决方法
这是一次很棒的尝试,您已经非常接近了。问题发生在这里:
for dct in wrd:
vl_check = [val for val in dct.values() if 'abc' in val]
result.append(','.join(vl_check) if vl_check else 'NA') # << Problem!!
您为每个 dct
中的每个 wrd
在结果中添加一行。您希望单个 wrd
的所有元素都在同一行中。此外,如果 wrd
中的任何元素都没有 'abc'
,那么您最终可能会得到多个 NA。这是我的建议:
for wrd in lst:
vl_check = []
for dct in wrd:
vl_check += [val for val in dct.values() if 'abc' in val]
result.append(','.join(vl_check) if vl_check else 'NA')
首先,我们为单个 vl_check
中的所有项目附加到相同的 wrd
。完成后,我们str.join()
该列表,以便所有这些项目都在我们放入 result
的单个字符串中。
上面的代码给出了输出:
Result
0 abc1
1 NA
2 abc2,abc14
3 abc3,abc4,abc10
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。