3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
試試這個(gè)更柱狀的解決方案。它假設(shè)字典中總是有“S”鍵。
df_tmp = df['Items'].apply(pd.Series)
for c in df_tmp.columns:
df[c] = df_tmp[c].apply(lambda x: x.get('S'))
df = df.drop(columns='Items')

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
看起來迭代所有 df 是不可避免的。我不確定它是否更好,但我知道 pandas 這樣做的方式是使用iterrows()
.
在文檔中,他們還提到itertuples()
了特定用例,但同樣,我在這里不是專家。
希望這可以幫助!

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
測試數(shù)據(jù):
import pandas as pd
test_data = {'item' : [{'comp': {'S': '2019-08-02T16:54:55.035196+03:00'}, 'ID': {'S': '336'}, 'dID': {'S': '1763523'}, 'fname': {'S': '558012'}}, {'comp': {'S': '2019-09-02T16:54:55.035196+03:00'}, 'ID': {'S': '336'}, 'dID': {'S': '1763523'}, 'fname': {'S': '558012'}}], 'Count': [1032,1032], 'ScannedCount':[1032,1032]}
df = pd.DataFrame.from_dict(test_data)
Out[64]:
item Count ScannedCount
0 {'comp': {'S': '2019-08-02T16:54:55.035196+03:... 1032 1032
1 {'comp': {'S': '2019-09-02T16:54:55.035196+03:... 1032 1032
據(jù)我了解,你試圖得到這樣的東西:
def extract(row):
item_series = pd.Series({k:v for k,v in row['item'].items()})
result = row.append(item_series)
return result
df = df.apply(extract, axis = 1)
這給了你:
Out[67]:
comp ID dID \
0 {'S': '2019-08-02T16:54:55.035196+03:00'} {'S': '336'} {'S': '1763523'}
1 {'S': '2019-09-02T16:54:55.035196+03:00'} {'S': '336'} {'S': '1763523'}
fname
0 {'S': '558012'}
1 {'S': '558012'}
## skipped some columns for clarity
添加回答
舉報(bào)