python - 将一系列 dict 和 concat 转换为数据帧

标签 python pandas dataframe concatenation

我的数据框

                             Items  Count  ScannedCount  
0  {'comp': {'S': '2019-08-02'}...   1032          1032 
1  {'comp': {'S': '2019-08-27'}...   1032          1032  

项目系列看起来像这样

{'comp': {'S': '2019-08-02T16:54:55.035196+03:00'}, 'ID': {'S': '336'}, 'dID': {'S': '1763523'}, 'fname': {'S': '558012'}}

使用此 post 中的第二个答案允许我将系列转换为数据框。 问题是如何扩展该操作,因为它发生在每一行上,

当前方法:

循环每一行并将它们连接成一个系列(非常慢)

item_df = pd.DataFrame(df['Items'].iloc[i]) for i in range(df.shape[0])]).reset_index(drop=True), df], axis=1)

将结果与原始数据框连接

df = pd.concat([temp, df], axis=1)

我相信第一部分中的 for 循环是瓶颈。 是否有更快的方法将序列转换为数据帧并将其连接回原始数据帧。

预期输出:

                 comp   ID  dID      fname   Count  ScannedCount  
0  2019-08-02T16:54:55  336 1763523  548012  1032   1032
1  2019-09-01T14:52:24  336 1763523  528012  1032   1032

最佳答案

尝试这个更加柱状的解决方案。它的工作原理是假设字典中始终有“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')

关于python - 将一系列 dict 和 concat 转换为数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58383927/

相关文章:

python - 如何使用 for 循环遍历编号变量?

python - Geany 无法执行 Python

python - 如何将数据框的格式从两行转换为单行

python - (Python,数据帧): Add a Column and insert the nth smallest value in the row

Python 映射数组

python - Pandas 数据帧 : Efficiently select cases

python - 将两个 panda 数据帧相乘以重复数据一定次数

python - 使用 groupby 获取每组的最大众数

java - Scala中$符号有什么用?

根据一列中的零值删除 R Dataframe 行