【发布时间】:2018-01-26 10:22:08
【问题描述】:
假设你有一个 pandas DataFrame,它包含这样的频率信息:
data = [[1,1,2,3],
[1,2,3,5],
[2,1,6,1],
[2,2,2,4]]
df = pd.DataFrame(data, columns=['id', 'time', 'CountX1', 'CountX2'])
# id time CountX1 CountX2
# 0 1 1 2 3
# 1 1 2 3 5
# 2 2 1 6 1
# 3 2 2 2 4
我正在寻找一个简单命令(例如,使用pd.pivot 或pd.melt())将这些频率恢复为tidy data,应该如下所示:
id time variable
0 1 X1
0 1 X1
0 1 X2
0 1 X2
0 1 X2
1 1 X1
1 1 X1
1 1 X1
1 1 X2 ... # 5x repeated
2 1 X1 ... # 6x repeated
2 1 X2 ... # 1x repeated
2 2 X1 ... # 2x repeated
2 2 X2 ... # 4x repeated
【问题讨论】:
-
R 代码将由
uncount(df, freq)与 tidyr >= 0.8,参见 stackoverflow.com/a/48571794/3637203
标签: python pandas pivot-table