Python 将行从dataframeB插入到DataframeA,带键,不带合并
我有一个Python 将行从dataframeB插入到DataframeA,带键,不带合并,python,dataframe,Python,Dataframe,我有一个dataframe,其中有1000条记录,如下所示: ID to from Date price Type 1 69 18 2/2020 10 A 2 11 12 2/2020 5 A 3 18 10 3/2020 4 B 4 10 11 3/2020 10 A 5 12 69 3/2020
dataframe
,其中有1000条记录,如下所示:
ID to from Date price Type
1 69 18 2/2020 10 A
2 11 12 2/2020 5 A
3 18 10 3/2020 4 B
4 10 11 3/2020 10 A
5 12 69 3/2020 4 B
6 12 20 3/2020 3 B
7 69 21 3/2020 3 A
我想要的输出是:
ID to from Date price Type ID to from Date price Type
1 69 18 2/2020 4 A 5 12 69 3/2020 4 B
1' 69 18 2/2020 6 A Nan Nan Nan Nan Nan Nan
2 11 12 2/2020 5 A Nan Nan Nan Nan Nan Nan
4 10 11 3/2020 4 A 3 18 10 3/2020 4 B
4' 10 11 3/2020 6 A Nan Nan Nan Nan Nan Nan
Nan Nan Nan Nan Nan Nan 6 12 20 3/2020 3 B
7 69 21 3/2020 3 A Nan Nan Nan Nan Nan Nan
其思想是迭代行,如果类型为B,则将行放在类型为A且from=to的第一条记录旁边,
如果价格等于它的ok,如果它没有以更高的价格拆分行,则新的价格将被取消
我将数据帧划分为A型和B型,并尝试迭代这两种类型
grp = df.groupby('type')
transformed_df_list = []
for idx, frame in grp:
frame.reset_index(drop=True, inplace=True)
transformed_df_list.append(frame.copy())
A = pd.DataFrame([transformed_df_list[0])
B= pd.DataFrame([transformed_df_list[1])
for i , row in A.iterrows():
for i, row1 in B.iterrows():
if row['to'] == row1['from']:
if row['price'] == row1['price']:
row_df = pd.DataFrame([row1])
output = pd.merge(A ,B, how='left' , left_on =['to'] , right_on =['from'] )
问题是,使用合并函数a可以获得多个重复行,而我无法检查拆分行的价格?
有没有办法在没有合并功能的情况下在数据帧中插入B行?重复行是您唯一关心的合并吗?不仅如此,我不知道如何检查价格和拆分?拆分行是什么意思?是的,如果dfa['to']==dfb['from']和dfa['price']==dfb['price']下一步插入dfb行,如果dfa['price']>dfb['price'],则分割行dfa,新的价格行是dfa['price']=dfa['price']-dfb['price'],那么分割是什么意思?重复行是您唯一关心的合并吗?不仅仅是,我不知道如何检查价格和分割?你说的分割是什么意思?是的,如果dfa['to']==dfb['from']和dfa['price']==dfb['price']下一步只插入dfb行,如果dfa['price']>dfb['price'],则分割行dfa,新的价格行是dfa['price']=dfa['price']-dfb['price'],那么分割是什么意思?