我想用第二个数据帧更新一个数据帧。我有一个.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)
我希望我很清楚。
答案 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