我有一個數據集,看起來像這樣:[R相當於itertools.chain
t x y
1 0 0 0
2 1 10 9
3 2 20 18
4 3 30 27
...
我想崩潰擴大數據集的每一行垂直放入一個新列z
。我們的目標將是這個樣子:
t z
1 0 0
2 0 0
3 1 10
4 1 9
5 2 20
6 2 18
7 3 30
8 3 27
...
在Python中,我會用itertools.chain
用於此目的:
import itertools
# Make some fake data
data = [{'t':t, 'x':t*10, 'y':t*9} for t in xrange(10)]
# [ {'t': 0, 'y': 0, 'x': 0},
# {'t': 1, 'y': 9, 'x': 10},
# {'t': 2, 'y': 18, 'x': 20},
# ...]
# transformation...
list(itertools.chain(*(({'t':x['t'], 'z':x['x']}, {'t':x['t'], 'z':x['y']})
for x in data)
))
# [{'z': 0, 't': 0},
# {'z': 0, 't': 0},
# {'z': 10, 't': 1},
# {'z': 9, 't': 1},
# {'z': 20, 't': 2},
# {'z': 18, 't': 2},
# ...]
我犯了很多不同的嘗試與重塑包(melt
據t
分組似乎如此接近我想要的,但排序t
是不穩定的,據我所知)。
也許你可以澄清爲什麼你使用'melt'的嘗試似乎只是'接近'你想要的,而你'按t排序並不穩定'的含義。謝謝! – Henrik