熊猫从宽到长带来空数据框

Jua*_*n C 7 python dataframe pandas

我正在执行一项非常简单的任务:应用于wide_to_longDataFrame,但每次运行它时,我都会得到一个空的 DataFrame。我几乎确定我的做法是正确的,所以我查阅了文档并尝试应用其中显示的示例,它还带来了一个空的 DataFrame!这是示例代码:

import pandas as pd

df = pd.DataFrame({
    'famid': [1, 1, 1, 2, 2, 2, 3, 3, 3],
    'birth': [1, 2, 3, 1, 2, 3, 1, 2, 3],
    'ht_one': [2.8, 2.9, 2.2, 2, 1.8, 1.9, 2.2, 2.3, 2.1],
    'ht_two': [3.4, 3.8, 2.9, 3.2, 2.8, 2.4, 3.3, 3.4, 2.9]
})

l = pd.wide_to_long(df, stubnames='ht', i=['famid', 'birth'], j='age', sep='_', suffix='\\w')
l.shape
Run Code Online (Sandbox Code Playgroud)

输出:

Out[2]: (0, 3)
Run Code Online (Sandbox Code Playgroud)

我尝试更新 Pandas,但没有帮助。可能会发生什么?

Gon*_*ica 5

该数据框与 Pandas 官方文档中使用的数据框相同pandas.wide_to_long

对于这种以非整数作为后缀的特定情况,请使用suffix=r'\w+',

l = pd.wide_to_long(df, stubnames='ht', i=['famid', 'birth'], j='age',
                    sep='_', suffix=r'\w+')
Run Code Online (Sandbox Code Playgroud)

如果打印 的形状l,就会得到以下结果

print(l.shape)
[Out]: (18, 1)
Run Code Online (Sandbox Code Playgroud)

或者,正如@BENY 建议的那样,suffix='\\w+'

l = pd.wide_to_long(df, stubnames='ht', i=['famid', 'birth'], j='age',
                    sep='_', suffix='\\w+')
Run Code Online (Sandbox Code Playgroud)

如果打印出 1 的形状,l则会得到以下结果

print(l.shape)
[Out]: (18, 1)
Run Code Online (Sandbox Code Playgroud)