【发布时间】:2021-04-30 11:57:49
【问题描述】:
我需要再次重组我的数据。 我有两个数据框:df1 和 df2,我想要 df3
df1 df2 df3
1 2 3 1 2 3 a 1 b 4 c 7
1 a b c 1 1 2 3 d 1 e 4 f 7
2 d e f 2 4 5 6 g 1 h 4 i 7
3 g h i 3 7 8 9 a 2 b 5 c 8
d 2 e 5 f 8
g 2 h 5 i 8
a 3 b 6 c 9
d 3 e 6 f 9
g 3 h 6 i 9
所以df3的逻辑应该类似于矩阵乘法。 我确实尝试修改并回答了我昨天的问题:
a,b = df.shape
m = int(a/2)
x = pd.DataFrame(df.iloc[:m,np.r_[m:b]].to_numpy()).T
y = pd.DataFrame(df.iloc[m:,:m].to_numpy())
out = (pd.concat((y,x),axis=1).sort_index(axis=1)
.set_axis(df.columns,axis=1,inplace=False))
我确实成功地实现了这段代码,但是我自己的修改并没有得到我想要的结果。 欢迎和赞赏任何推荐。请考虑以下信息:
- 3x3 是示例性的,因此给定的数据框形状可能因大小和形状而异
- 两个给定的数据框将始终具有相同的形状和大小
- 昨天的问题 -> 好答案 -> 错误的问题,我的坏问题 Reorganize elements of Pandas Dataframe by row and column to new dataframe
- 我知道有一种方法可以从 pandas 中的矩阵乘法自动获取结果矩阵。我已经在我的脚本中实现并使用了它。
- 在 df1 中仅使用数字而在 df2 中仅使用字母是为了更容易理解尝试做什么。 换句话说,所需的数据结构可以描述为:
我希望这篇大文章可以澄清我的问题。由于我是新来的,我也感谢批评我寻求帮助并改善我在 Stack-Overflow 上的沟通方式。
一个小更新: 我发现这个Pandas concatenate alternating columns Thread 非常接近我想要做的事情。因为我必须在几分钟内工作,所以我不能试一试。 但是对于所有想为我的问题做出贡献的人来说,这可能会更容易并提供一些灵感。
我明天会继续努力,让你们更新。
提前致以诚挚的问候和感谢,
汉斯·彼得
【问题讨论】:
标签: python python-3.x pandas dataframe matrix