我有一个示例数据集,其中包含一组列名称。在移动数据时,我在每一行中打印字母,如下所示。
我正在尝试移动每一行的值以匹配相应的列。我试过这样做 pd.shift() 这样做但没有取得太大的成功。我试图得到下面看到的东西。有什么想法吗?
import pandas as pd
df = pd.DataFrame({'A': list('AAAAA'),
'B': list('CBBDE'),
'C': list('DDCEG'),
'D': list('EEDF '),
'E': list('FFE '),
'F': list('GGF '),
'G': list(' G ')})
A B C D E F G
0 A C D E F G
1 A B D E F G
2 A B C D E F G
3 A D E F
4 A E G
之后:
A B C D E F G
0 A C D E F G
1 A B D E F G
2 A B C D E F G
3 A D E F
4 A E G
最佳答案
这是一个广播比较方法。这将非常快,但确实具有更高的内存复杂性。
a = df.to_numpy()
b = df.columns.to_numpy()
pd.DataFrame(np.equal.outer(a, b).any(1) * b, columns=b)
A B C D E F G
0 A C D E F G
1 A B D E F G
2 A B C D E F G
3 A D E F
4 A E G
关于python - Pandas 移动行值以匹配列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909222/