1
可以將新的索引分別應用於DF,用groupby
進行分組嗎?準確地說 - 是否有一個優雅的方式來做到這一點,並可以通過groupby
組改變原來的DF?pandas.DataFrame - 如何按組重新索引?
UPD: 我的數據是這樣的:
A B C
0 a x 0.903343
1 a z 0.982050
2 g x 0.274823
3 g y 0.334491
4 c z 0.756728
5 f z 0.697841
6 d z 0.505845
7 b z 0.768199
8 b y 0.743012
9 e x 0.697212
我按列「A」和「B」的分組,我想,每一個獨特的對那個值的列將在相同的索引值原來的DF。另外 - 原始的DF可能很大,我試圖想象如何製作這樣的重新索引而沒有低效率地形成全新的DF。使用
目前即時通訊這個解決方案:
創建測試數據幀第一:
import pandas as pd
import random
random.seed(1)
df = pd.DataFrame({'A': [random.choice(ascii_lowercase[:5]) for _ in xrange(10)],
'B': [random.choice(['x', 'y']) for _ in xrange(10)],
'C': [random.random() for _ in xrange(10)]})
如果你想在新的
df = pd.DataFrame({'A': [random.choice(ascii_lowercase[:5]) for _ in xrange(10)],
'B': [random.choice(['x', 'y']) for _ in xrange(10)],
'C': [random.random() for _ in xrange(10)]})
df['id'] = None
new_df = pd.DataFrame()
for i, (n, g) in enumerate(df.groupby(['A', 'B'])):
g['id'] = i
new_df = new_df.append(g)
new_df.set_index('id', inplace=True)
這將是,如果你方便的提供了一些樣本數據。 – 2013-03-12 15:51:23
此外,您可以在這裏澄清一些含糊之處。你想修改組名嗎?組內選定的行索引?如果你可以展示一個開始的df,一個groupby,以及你試圖完成的那種馴服,那將會很有幫助。 – 2013-03-12 15:59:43
如果我理解正確,看起來您嘗試爲列A和列B的每個組合創建具有唯一值的整數索引。除非因特定原因需要整數索引,否則可以簡單地使用列A和B創建MultiIndex與'df.set_index([「A」,「B」])。sort()'這將允許你做所有相同的選擇和切片整數索引將使用'xs'和'ix'。例如:'df.ix [「a」]。ix [「y」]'或'df.xs(key =「x」,level = 1)'。 – bdiamante 2013-03-12 21:19:09