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,但没有帮助。可能会发生什么?
该数据框与 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)