将数据框切片为新的数据框

时间:2019-04-13 10:14:06

标签: python pandas pandas-groupby

我必须将数据帧切成新的数据帧,并按目标分组(我使用的是熊猫)。

这是我的数据帧,称为data

Flight N .    DEP.     ARR.     Company
_________________________________________________
1             JFK      GTW      British Airways
2             JFK      LDN      British Airways
3             JFK      GNR      British Airways
4             JFK      CDG      Air France
5             JFK      DXB      Emirates
3             JFK      CDG      Lufthansa
7             JFK      DXB      Emirates
8             JFK      DXB      Emirates
9             JFK      LDN      British Airways
10            JFK      GNR      LATAM Airways

我将创建受此困扰的新Dataframe,因此采用这种方式:

dataframe_DXB

5             JFK      DXB      Emirates
7             JFK      DXB      Emirates
8             JFK      DXB      Emirates

dataframe_CDG

4             JFK      CDG      Air France
3             JFK      CDG      Lufthansa

以此类推。

问题在于,我能够通过写入每个目标来进行切片,但是我会创建一个循环以使过程自动化。 之后,我将能够回忆起写入dataframe_ + destination

的每个数据框

4 个答案:

答案 0 :(得分:1)

您可以尝试使用此方法过滤添加到目标的数据框,它不是在使用分组依据,而是可以完成工作。

dataframe = {} # empty dataframe dictionary
destination = [] # list of destination
for dest in destination:
    dataframe[dest] = data[data['ARR.'] == dest]

此代码会将您的数据帧存储在dataframe词典中,并可以使用键进行访问,例如:dataframe['DXB']

答案 1 :(得分:0)

看看熊猫groupby https://www.shanelynn.ie/summarising-aggregation-and-grouping-data-in-python-pandas/

但是,为了访问分组的数据帧,您仍然需要循环

关于您希望通过dataframe_ + destination访问数据框 只需将数据帧写入字典:

代码段:

dic={}
grouped_df = data.groupby('ARR')

for dest,df in grouped_df:
 dic[dest] = df

答案 2 :(得分:0)

如果您要写入文件,这将起作用:

for destination, sub_df in data.groupby('ARR')
    with open(f'dataframe_{destination}.csv') as f:
        sub_df.to_csv(f)

如果您只想将组放在单个变量中,例如dict

df_by_destination = {destination: sub_df for destination, sub_df in data.groupby('ARR')}

答案 3 :(得分:0)

这也许也可以。

dict_of_dfs = {}
for n, g in df.groupby(df['ARR']):
    dict_of_dfs[n] = g