【问题标题】:Combining two columns using pandas [closed]使用熊猫组合两列[关闭]
【发布时间】:2021-09-10 19:07:37
【问题描述】:

我目前有一个导入到 Jupyter 实验室的 csv。 Pandas 已导入,数据框为 7845 行 x 14 列。我有两个特定的列,一个名为“source_app_packets”,另一个是“source_app_packets.1”。两列几乎相同。主要区别是“source_app_packets”中丢失的任何数据都存在于“source_app_packets.1”上,反之亦然。我的问题是有什么办法可以将这两者结合起来?

【问题讨论】:

  • 请举例说明你所说的结合是什么意思
  • 我想把这两列变成一列。例如,在“source_app_packets”列中,值为 39,但在“source_app_packets.1”中,值为空。在我看来,这两列应该是相同的数字。
  • 如果两列都作为值会发生什么,如果它不重要,那么当它相同时会发生什么情况,那么下面的 2 个答案将完成这项工作
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python pandas dataframe csv


【解决方案1】:

如果您还导入 numpy,您可以使用类似这样的方法,假设您的数据在 df 中。

import numpy as np

# code to import data

# update source_app_packets column
df["source_app_packets"] = np.where(
    df["source_app_packets"].isnull(),
    df["source_app_packets.1"],
    df["source_app_packets"],
)

df.drop(["source_app_packets.1"], axis=1, inplace=True)

【讨论】:

  • 这个解决方案对我有用。我用 drop 命令跟进了你的代码行以删除不必要的列。
  • 我打算添加代码以删除该列但被叫走了,我现在已经用它更新了答案。
【解决方案2】:

你可以使用combine_first:

df["source_app_packets"].combine_first(df["source_app_packets.1"]

例子:

import pandas as pd

data = {"source_app_packets":[1, None, 3, None],"source_app_packets.1":[None,2, None, 4]}
df = pd.DataFrame(data)
df["source_app_packets"].combine_first(df["source_app_packets.1"])

输出以下Series:

0    1.0
1    2.0
2    3.0
3    4.0
Name: source_app_packets, dtype: float

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2014-10-20
    • 2019-05-19
    • 2021-02-06
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多