pandas wide_long vs(堆栈和融化)用于数据帧转换

最棒的

我有一个数据框,如下所示

df = pd.DataFrame({
'subject_ID':[1,2,3,4,5],
'date_visit':['1/1/2020','3/3/2200','13/11/2100','24/05/2198','30/03/2071'],
'a11fever':['Yes','No','Yes','Yes','No'],
'a12diagage':[36,34,42,40,np.nan],
'a12diagyr':[2021,3213,2091,4567,8901],
'a12diagyrago':[6,np.nan,9,np.nan,np.nan]})

我想转换一个主题示例输出如下所示的数据框

在此处输入图片说明

虽然我可以使用pd.melt成功完成此操作stack,但我不能使用wide_long

pd.melt(df, id_vars =['subject_ID','date_visit'], value_vars =['a11fever', 'a12diagage', 'a12diagyr','a12diagyrago'])  # works fine

pd.wide_to_long(df, stubnames=['measurement', 'val'],i=(['subject_ID','date_visit']), j='grp').sort_index(level=0) # returns 0 records

df.set_index(['subject_ID','date_visit']).stack().reset_index() #works fine

我还有一个问题是

一)我们总是不得不提到的所有列名,我们希望下变换value_vars的部分pd.melt我的真实数据将超过120列。那么,在这里我必须一一提及吗?

您还能在使用方法上帮助我wide_long吗?

二凡

这不是用例,pd.wide_to_long因为它将生成不正确的输出。您必须使用stubnames,这些将转换为列(a11a12)。参见示例:

melt = pd.wide_to_long(df, 
                i=['subject_ID', 'date_visit'], 
                stubnames=['a11', 'a12'], 
                suffix='\D+', 
                j='fever_diag').reset_index()
    subject_ID  date_visit fever_diag  a11     a12
0            1    1/1/2020    diagage  NaN    36.0
1            1    1/1/2020     diagyr  NaN  2021.0
2            1    1/1/2020  diagyrago  NaN     6.0
3            1    1/1/2020      fever  Yes     NaN
4            2    3/3/2200    diagage  NaN    34.0
5            2    3/3/2200     diagyr  NaN  3213.0
6            2    3/3/2200  diagyrago  NaN     NaN
7            2    3/3/2200      fever   No     NaN
8            3  13/11/2100    diagage  NaN    42.0
9            3  13/11/2100     diagyr  NaN  2091.0
10           3  13/11/2100  diagyrago  NaN     9.0
11           3  13/11/2100      fever  Yes     NaN
12           4  24/05/2198    diagage  NaN    40.0
13           4  24/05/2198     diagyr  NaN  4567.0
14           4  24/05/2198  diagyrago  NaN     NaN
15           4  24/05/2198      fever  Yes     NaN
16           5  30/03/2071    diagage  NaN     NaN
17           5  30/03/2071     diagyr  NaN  8901.0
18           5  30/03/2071  diagyrago  NaN     NaN
19           5  30/03/2071      fever   No     NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

列名为float的pandas wide_to_long

pandas wide_to_long后缀参数

基于第一列值的 Pandas DataFrame Wide to Long

在 R 中重塑一组列的多个副本 Wide > Long 和 Long > Wide

Pandas 和 Matplotlib:无法在数据帧上使用 Matplotlib 获得堆栈图

在R中将许多变量从long转换为wide

Pandas wide_to_long 的行为与 Python 2.7 中的先前版本大不相同

如何使用Wide_to_long或Pivot重塑数据框?

如何转换 Pandas 数据帧架构

将输出转换为 Pandas 数据帧

从 Pandas 数据帧转换为 LabeledPoint RDD

使用 pd.loc 将函数应用于 pandas 数据帧的多行和多列

将 Pandas 数据帧转换为 1 和 0 的矩阵,以表示存在/不存在

使用 Struct 和 Array 结构将 Pandas 数据帧转换为 JSON 以上传到 BigQuery

Pandas:从数据帧长到宽的分组和自定义转换

用于融化数据帧的ggplot标签

Pandas 数据帧乘法

Python datetime 对象和数据转换为 PANDAS 数据帧

从pandas数据帧到元组(用于Haversine模块)

用于多数据帧操作的 Pandas 矢量化

在 Pandas python 中将单行转换为不同的数据帧

使用 Pandas 在 Python 中将 JSON 结构转换为数据帧

将 Pandas 数据帧单元转换为函数输入

使用 Pandas 将数据帧从长转换为宽

将Pandas数据帧转换为频率矩阵

将 Pandas 数据帧转换为字典并添加公共键值对

无法将数组的 numpy 数组转换为 Pandas 数据帧

Python Pandas - 将数据帧转换为 json

在pandas数据帧中将float转换为字符串