【问题标题】:Which datasets-merging operation would do this in Pandas?哪些数据集合并操作会在 Pandas 中执行此操作?
【发布时间】:2019-01-27 00:01:30
【问题描述】:

假设我有两个 pandas DataFrame,X 和 Y:

X =
+---+----------+---------+
|   | Value1   | Value2  |
+---+----------+---------+
| A |    1     |   NaN   |
| B |    0     |    0    |
+---+----------+---------+

Y =
+---+----------+---------+
|   | Value1   | Value2  |
+---+----------+---------+
| A |    2     |   NaN   |
| C |    30    |   NaN   |
+---+----------+---------+

我想根据索引(行名)合并/加入它们,结果如下:

+---+----------+---------+
|   | Value1   | Value2  |
+---+----------+---------+
| A |    1     |    2    |
| B |    0     |    0    |
| C |    30    |   NaN   |
+---+----------+---------+

使用合并和“外部”,结果表每个表都有列,而不仅仅是连接。我需要一些将新行追加到末尾的东西,但也需要为匹配的索引追加新列。

这是“外部”合并的结果:

+---+----------+---------+----------+---------+
|   | Value1_X | Value2_X| Value1_Y | Value2_Y|
+---+----------+---------+----------+---------+
| A |    1     |   NaN   |    2     |   NaN   |
| B |    0     |    0    |   NaN    |   NaN   |
| C |   NaN    |   NaN   |    30    |   NaN   |
+---+----------+---------+----------+---------+

这几乎是我想要的,但忽略了原始列标签...

【问题讨论】:

  • 将 Y 附加到 X,然后删除重复项。
  • 这会让我得到两行索引为 A,一个值为 1,另一个值为 2,对吗?
  • 好的。我现在看到你的问题了。那么,告诉我,如果在 X 中:索引 A 的值为 1、1 会怎样。在这种情况下输出应该如何?
  • 最后一个问题。那2在哪一列?列“Value1”还是“Value2”?
  • 这将是“Value1_Y”,甚至可能是“Value 3”。我想我现在更好地看到了这个问题..

标签: python-2.7 pandas join merge


【解决方案1】:

关于“外部”合并的结果:

X = 
+---+----------+---------+----------+---------+
|   | Value1_X | Value2_X| Value1_Y | Value2_Y|
+---+----------+---------+----------+---------+
| A |    1     |   NaN   |    2     |   NaN   |
| B |    0     |    0    |   NaN    |   NaN   |
| C |   NaN    |   NaN   |    30    |   NaN   |
+---+----------+---------+----------+---------+

做,X = X.apply(lambda x: pd.Series(x.dropna().values), axis = 1)

这会给

    0     1
A   1.0   2.0
B   0.0   0.0
C   30.0  NaN

【讨论】:

  • 太棒了,谢谢。我认为第三行也以 0.0 而不是 NaN 结束
猜你喜欢
  • 2011-12-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 2011-01-16
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
相关资源
最近更新 更多