我有以下內容,我已經創建了一個 df:
data_response = [{'name': 'impressions', 'values': [{'value': 7352}], 'id': '179286/insights/impressions/lifetime'}, {'name': 'reach', 'values': [{'value': 7352}], 'id': '179286/insights/reach/lifetime'}, {'name': 'taps_forward', 'values': [{'value': 6280}], 'id': '179286/insights/taps_forward/lifetime'}, {'name': 'taps_back', 'values': [{'value': 134}], 'id': '179286/insights/taps_back/lifetime'}, {'name': 'exits', 'values': [{'value': 610}], 'id': '179286/insights/exits/lifetime'}, {'name': 'replies', 'values': [{'value': 0}], 'id': '179286/insights/replies/lifetime'}]
df = pd.DataFrame(data_response)

我試過這個,但它只提取字典,我只想得到數值例如:7352:
df = df.explode('values').reset_index(drop=True)
uj5u.com熱心網友回復:
您可以explode并應用pd.Series建構式:
df['values'] = df['values'].explode().apply(pd.Series)
或應用一個函式來獲取列value中每個單元格中的鍵值values:
df["values"] = df['values'].apply(lambda x: x[0]["value"])
輸出:
name values id
0 impressions 7352 179286/insights/impressions/lifetime
1 reach 7352 179286/insights/reach/lifetime
2 taps_forward 6280 179286/insights/taps_forward/lifetime
3 taps_back 134 179286/insights/taps_back/lifetime
4 exits 610 179286/insights/exits/lifetime
5 replies 0 179286/insights/replies/lifetime
uj5u.com熱心網友回復:
我將values列更改為value當apply用作值時回傳 DataFrame 的 Numpy 表示。
df.rename(columns={"values": "value"},inplace=True)
df["value"] = df.apply(lambda x: x.value[0]["value"],axis =1)
name value id
0 impressions 7352 179286/insights/impressions/lifetime
1 reach 7352 179286/insights/reach/lifetime
2 taps_forward 6280 179286/insights/taps_forward/lifetime
3 taps_back 134 179286/insights/taps_back/lifetime
4 exits 610 179286/insights/exits/lifetime
5 replies 0 179286/insights/replies/lifetime
如果您需要改回列名:
df.rename(columns={"value": "values"},inplace=True)
uj5u.com熱心網友回復:
我們可以試試
df['values'] = df['values'].str[0].str.get('value')
0 7352
1 7352
2 6280
3 134
4 610
5 0
Name: values, dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392022.html
標籤:熊猫
