繁体   English   中英

无法使用来自 dict 的值填充 dataframe 中的列,该值存在于列之一的列表中的 dict 中

[英]Unable to populate column in dataframe using value from dict which is present in dict inside list in one of the column

我在数据框中有一列,其值类似于此列表,其中包含字典

[{'symbol': '$', 'value': 5.2, 'currency': 'USD', 'raw': '$5.20', 'name': '$5.20$5.20 ($1.30/Fl Oz)', 'asin': 'B07N31VZP8']

我只想要这本词典中的“价值”。

for i in df["prices"]:
    try:
        #print(type(i[0]["value"]))
        df["prices"] = df["prices"].apply(lambda i:i[0]["value"])
    except Exception as e:
        print("",e)

但即使我能够获得该值,我也会收到以下错误,我无法在 dataframe 列中填充它

'float' object is not subscribable

如何克服这个问题?

我认为问题在于您多次应用转换。 apply()已经对 dataframe 中的每一行应用了转换。 如果您删除循环,它应该可以工作:

import pandas as pd

# Create your data
df = pd.DataFrame([
    [[{'symbol': '$', 'value': 5.2, 'currency': 'USD', 'raw': '$5.20', 'name': '$5.20$5.20 ($1.30/Fl Oz)', 'asin': 'B07N31VZP8'}]]
    , [[{'symbol': '$', 'value': 5.2, 'currency': 'USD', 'raw': '$5.20', 'name': '$5.20$5.20 ($1.30/Fl Oz)', 'asin': 'B07N31VZP8'}]]
], columns=['prices'])

print(df)

df["prices"] = df["prices"].apply(lambda i:i[0]["value"])

print(df)

输入 dataframe:

                                         prices
0  [{'symbol': '$', 'value': 5.2, 'currency': 'US...
1  [{'symbol': '$', 'value': 5.2, 'currency': 'US...

Output dataframe:

   prices
0     5.2
1     5.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM