【问题标题】:Column to Column match using pandas or numpy in Python在 Python 中使用 pandas 或 numpy 进行列到列匹配
【发布时间】:2016-08-05 02:50:37
【问题描述】:

我正在尝试将此数据列与列匹配。我想将第 1 列的第一个单元格匹配到第 3 列的第一个单元格,然后将第 1 列的第二个单元格匹配到第 3 列的第二个单元格,依此类推。我的要求是得到布尔结果。我是新手,现在在 python 上工作了一周。

我的数据是 1800 行和 35 列。我想做的只是使用 =(A2=C2) 的 excel 但进入 python。

请提供给定数据框的确切代码。

提前致谢

Data Set

【问题讨论】:

  • 你在df[[2]] == df[[0]]之后吗?
  • 我试过 (1,Column1)=(1,Column3) 和类似的
  • Maxu - 是的,但我不知道我将如何将它循环到整个列,以及逐个单元格
  • 建议:将您有问题的代码放在您的问题中。以短单元测试的形式插入它。这使某人可以轻松地将其复制并直接粘贴到 ipython 并处理您的问题。

标签: python numpy pandas


【解决方案1】:

试试这个:

In [28]: df
Out[28]:
   a  b  c
0  5  1  2
1  5  2  8
2  3  3  8
3  3  1  4
4  6  3  4
5  1  0  0
6  6  0  0
7  4  4  3
8  3  0  4
9  9  0  9

In [29]: df.iloc[:, 0] == df.iloc[:, 2]
Out[29]:
0    False
1    False
2    False
3    False
4    False
5    False
6    False
7    False
8    False
9     True
dtype: bool

如果你需要一个新的 boolean 列:

In [30]: df['bool'] = df.iloc[:, 0] == df.iloc[:, 2]

In [31]: df
Out[31]:
   a  b  c   bool
0  5  1  2  False
1  5  2  8  False
2  3  3  8  False
3  3  1  4  False
4  6  3  4  False
5  1  0  0  False
6  6  0  0  False
7  4  4  3  False
8  3  0  4  False
9  9  0  9   True

【讨论】:

  • MaxU - 感激不尽,我花了 3 天时间才弄明白。
【解决方案2】:

当您比较两个相同维度的 Numpy 数组时,您会得到一个布尔数组 - 每个数组元素对应一个。

如果 a = np.array([1,2,3,4,5]) b = np.array([1,3,2,5,5])

你得到

a==b  ==> [True, False, False, False, True] 

【讨论】:

  • 谢谢 ,,, 它通过使用 df.iloc[:, 0] == df.iloc[:, 2] 起作用
猜你喜欢
  • 2015-06-02
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 2013-09-18
相关资源
最近更新 更多