我必须将数据帧切成新的数据帧,并按目标分组(我使用的是熊猫)。
这是我的数据帧,称为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
的每个数据框答案 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