3
我有這樣一個數據幀:從現有含有列表的列建立一個新的數據框(使用列表填充新線)
df = pd.DataFrame({'name': ['toto', 'tata', 'tati'], 'choices': 0})
df['choices'] = df['choices'].astype(object)
df['choices'][0] = [1,2,3]
df['choices'][1] = [5,4,3,1]
df['choices'][2] = [6,3,2,1,5,4]
print(df)
choices name
0 [1, 2, 3] toto
1 [5, 4, 3, 1] tata
2 [6, 3, 2, 1, 5, 4] tati
我想建立一個數據幀基於DF像這樣
choice rank name
0 1 0 toto
1 2 1 toto
2 3 2 toto
3 5 0 tata
4 4 1 tata
5 3 2 tata
6 1 3 tata
7 6 0 tati
8 3 1 tati
9 2 2 tati
10 1 3 tati
11 5 4 tati
12 4 5 tati
我想使用每個值的列表和索引來填充新行。
我這樣做
size = df['choices'].map(len).sum()
df2 = pd.DataFrame(index=range(size), columns=df.columns)
del df2['choices']
df2['choice'] = np.nan
df2['rank'] = np.nan
k = 0
for i in df.index:
choices = df['choices'][i]
for rank, choice in enumerate(choices):
df2['name'][k] = df['name'][i]
df2['choice'][k] = choice
df2['rank'][k] = rank
k += 1
但我寧願一個量化的解決方案。 Python/Pandas可能嗎?
熊貓太棒了! StackOv和你也一樣;-)謝謝 – working4coins