在另一个数据框内复制一个小数据框

时间:2019-10-30 13:57:41

标签: python pandas dataframe copy

我想用第二个数据帧更新一个数据帧。我有一个.loc和.iloc解决方案,但是它很慢,需要执行几次操作。我认为存在更好的解决方案:

我的拳头数据框是:

Df1:

Index|item 1|Item n|item n+1|item n+2|Item m
A|a|aa|aaa|aaaa|aaaaaaa
B|b|bb|bbb|bbbb|bbbbbb
C|c|cc|ccc|cccc|cccccccc
D|d|dd|ddd|dddd|ddddddd

我的df2:

Index|item x|item y
102|az|ez
256|fafa|foo
12|fifi|fufu
50|fofo|fefe

目标是复制df2中的所有df1(带有rotation):

ez转到[items n, A] (replace aa)

az转到[items n, B] (replace bb)

foo转到[items n+1, A] (replace aaa)

fafa转到[items n+1, B] (replace bb)

我希望我很清楚。

1 个答案:

答案 0 :(得分:0)

您可以使用np.rot90函数

import pandas as pd
df1 = pd.read_csv('df1.txt',sep='|')
df1.set_index('Index',inplace=True)
df1
item 1  Item n  item n+1    item n+2    Item m
Index                   
A   a   aa  aaa aaaa    aaaaaaa
B   b   bb  bbb bbbb    bbbbbb
C   c   cc  ccc cccc    cccccccc
D   d   dd  ddd dddd    ddddddd


df2 = pd.read_csv('df2.txt',sep='|')

df1.columns 
df2
Index   item x  item y
0   102 az  ez
1   256 fafa    foo
2   12  fifi    fufu
3   50  fofo    fefe


rotate = df2.loc[0:1,'item x':'item y'].values
import numpy as np
df1.loc['A':'B','Item n':'item n+1'] =  np.rot90(rotate, k=3, axes=(1,0))
df1
item 1  Item n  item n+1    item n+2    Item m
Index                   
A   a   ez  foo aaaa    aaaaaaa
B   b   az  fafa    bbbb    bbbbbb
C   c   cc  ccc cccc    cccccccc
D   d   dd  ddd dddd    ddddddd