将一个小数据帧复制到另一个数据帧中

2024-10-06 13:22:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用第二个数据帧更新一个数据帧。我有一个与.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

目标是在df1中复制所有df2(使用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)

我希望我明白了


Tags: 数据indexfooitemsitemlocreplaceaz
1条回答
网友
1楼 · 发布于 2024-10-06 13:22:48

可以使用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

相关问题 更多 >