微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python pandas - 将主 df 列中的唯一 Id 添加回存储在数据帧列表中的已处理 dfs

如何解决python pandas - 将主 df 列中的唯一 Id 添加回存储在数据帧列表中的已处理 dfs

我有一个 df,其中每行包含多个需要读取和规范化的 json 字符串。

我可以读出 json 信息并通过将每一行作为新数据帧存储在列表中来规范化列 - 我已经用下面的代码完成了。

但是我需要在原始 df 中附加原始唯一 Id(即 'id': ['9clpa','g659am']) - 这在我当前的代码中丢失了。

预期输出是每个 Id 的数据帧列表,其中包括展开的 json 信息,还有一个包含 Id 的附加列(将为最终 df 的每一行重复)。

我希望这是有道理的,非常欢迎任何建议。非常感谢

数据框

df = pd.DataFrame(data={'id': ['9clpa','g659am'],'i2': [('{"t":"unique678","q":[{"qi":"01","answers":[{"answer":"M","value":"1"},{"answer":"F","value":"2"},{"answer":"G","value":"3"},{"answer":"V","value":"4"}]},{"qi":"02",{"answer":"A",{"answer":"B","value":"4"},"value":"5"},{"answer":"NC","value":"6"},{"answer":"O","value":"7"} ]}]}'),('{"t":"unique428","value":"7"} ]}]}')]})

当前代码

out={}
for i in range(len(df)):
    out[i] = pd.read_json(df.i2[i])
    out[i] = pd.json_normalize(out[i].q)

预期输出

pd.DataFrame(data={'id': ['9clpa','9clpa'],'qi': ['01','02'],'answers': ['{"answer":"M","value":"4"}','"answer":"M","value":"7"']})
pd.DataFrame(data={'id': ['g659am',"value":"7"']})

解决方法

class ContactsActivity : AppCompatActivity() {

    private lateinit var contactsActivityBinding :ActivityContactsBinding
    private val contactItemViewModel: ContactItemViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        contactsActivityBinding = ActivityContactsBinding.inflate(layoutInflater)
        setContentView(contactsActivityBinding.root)

        if (savedInstanceState == null) {
            val manager = supportFragmentManager
            val transaction = manager.beginTransaction()
            transaction.replace(contactsActivityBinding.flContent.id,PeopleFragment.newInstance())
            transaction.commit()
        }
    }
}

您可以添加一个 lambda 函数,它将 'id' 的值分配给新形成的 df。

编辑:您可以在列 1 中添加“id”列的位置,并定义创建数据框时希望它出现的位置。

输出数据帧:

enter image description here

,

在标准化列之后,您只是缺少将 id 分配给您的数据框:

out={}
for i in range(len(df)):
    out[i] = pd.read_json(df.i2[i])
    out[i] = pd.json_normalize(out[i].q)
    out[i]['id'] = df.id[i]
    out[i] = out[i].loc[:,['id','qi','answers']]

输出:

>>> out[0]
      id  qi                                                                                                                                                                                                                     answers
0  9clpa  01                                                                                                [{'answer': 'M','value': '1'},{'answer': 'F','value': '2'},{'answer': 'G','value': '3'},{'answer': 'V','value': '4'}]
1  9clpa  02  [{'answer': 'M',{'answer': 'A',{'answer': 'B','value': '4'},'value': '5'},{'answer': 'NC','value': '6'},{'answer': 'O','value': '7'}]
,

您可以使用 .json_normalize(此处的文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html

(来自https://medium.com/swlh/converting-nested-json-structures-to-pandas-dataframes-e8106c59976e

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?