将数据帧从宽到大转换 - 熊猫

时间:2018-04-29 13:32:11

标签: pandas split reshape

我有一个这样的数据框:

index num S
 0     1  1
 0     2  0
 0     3  0
 0     4  1
 1     1  1
 1     2  1
 1     3  Nan
 1     4  Nan

我试图将它从长到宽改变。例如

matches_df.columns = matches_df.columns.str.split('_', expand=True)

我根据this回答尝试了以下代码,但是我收到以下错误:

https://gallery.azure.ai/Experiment/Logistic-Regression-for-Text-Classification-Sentiment-Analysis-1

https://de.dariah.eu/tatom/classification_logistic_regression.html

TypeError:'float'类型的对象没有len()

为什么我无法拆分“_”?列中还有其他信息我想保留。

1 个答案:

答案 0 :(得分:1)

pandas.wide_to_long,当列有这样的存根时很好。

import pandas as pd

df.reset_index(inplace=True,drop=True)
df['id'] = df.index
df = pd.wide_to_long(df, stubnames='S_', i='id', j='num').reset_index().rename(columns={'S_':'S'})

#  id num  index    S
#0   0   1      0  1.0
#1   1   1      1  1.0
#2   0   2      0  0.0
#3   1   2      1  1.0
#4   0   3      0  0.0
#5   1   3      1  NaN
#6   0   4      0  1.0
#7   1   4      1  NaN