簡體   English   中英

基於 Pandas 中的系列成員資格創建兩個數據框

[英]Create two Dataframes based on series membership in Pandas

我是初學者,我似乎無法找到確切的答案。

我有兩個數據框,第一個有本地化的經濟數據 (df1):

(index)  (index)     2000     2010  Diff   
State    Region    
NY       NYC         1000     1100   100
NY       Upstate      200      270    70
NY       Long_Island 1700     1800   100 
IL       Chicago      300      500   200
IL       South         50       35    15
IL       Suburbs      800      650  -150

第二個有一個州和地區列表,(df2):

index   State   Region
0        NY      NYC
1        NY      Long_Island
2        IL      Chicago

最終,我想要做的是對df2的狀態和區域之間的Diff列與df1中未包含在df2所有其他列之間的Diff列運行t-test 但是,我還沒有設法划分組,所以我無法運行測試。

我最近的(許多)嘗試如下所示:

df1['Region', 'State'].isin(df2['Region', 'State'])

我也試過pd.merge但似乎無法讓它工作。 我認為這是因為多級索引,但我仍然不知道如何獲取不在df2的州/地區。

看來您需要MultiIndexes difference ,然后按loc選擇:

print (df1.index)
MultiIndex(levels=[['IL', 'NY'], ['Chicago', 'Long_Island', 
                                  'NYC', 'South', 'Suburbs', 'Upstate']],
           labels=[[1, 1, 1, 0, 0, 0], [2, 5, 1, 0, 3, 4]],
           names=['State', 'Region'])

print (df2.index)
Int64Index([0, 1, 2], dtype='int64', name='index')

print (df1.index.names)
['State', 'Region']

#create index from both columns
df2 =  df2.set_index(df1.index.names)
what is same as
#df2 = df2.set_index(['State','Region'])

mux = df1.index.difference(df2.index)
print (mux)
MultiIndex(levels=[['IL', 'NY'], ['South', 'Suburbs', 'Upstate']],
           labels=[[0, 0, 1], [0, 1, 2]],
           names=['State', 'Region'],
           sortorder=0)

print (df1.loc[mux])
               2000  2010  Diff
State Region                   
IL    South      50    35    15
      Suburbs   800   650  -150
NY    Upstate   200   270    70

全部一起:

df2 =  df2.set_index(df1.index.names)
df = df1.loc[df1.index.difference(df2.index)]
print (df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM