【问题标题】:Pandas merge how to avoid unnamed column熊猫合并如何避免未命名的列
【发布时间】:2017-04-26 12:54:25
【问题描述】:

我要合并两个 DataFrame:

DataFrame A columns: index, userid, locale  (2000 rows)  
DataFrame B columns: index, userid, age     (300 rows)

当我执行以下操作时:

pd.merge(A, B, on='userid', how='outer')

我得到了一个包含以下列的 DataFrame:

索引、未命名:0、用户 ID、语言环境、年龄

index 列和 Unnamed:0 列是相同的。我猜Unnamed:0 列是DataFrame B 的索引列。

我的问题是:在合并两个 DF 时,有没有办法避免 Unnamed 列?

之后我可以删除Unnamed 列,但只是想知道是否有更好的方法。

【问题讨论】:

  • 你试过设置 index = False 吗?这里有一个很好的讨论:stackoverflow.com/questions/36519086/…
  • @datawrestler 合并没有索引参数。 (to_csv 有但不合并)
  • 对,但是如果你在读取每个 DF 时设置标志然后合并可能会这样做
  • 你能分享一个数据集的样本和用于合并的代码吗?我相信我们可以找到解决方案!
  • @Cheng,我只能查看 Pandas 版本 0.7.0 - 它已经有 index 参数 - pandas.pydata.org/pandas-docs/version/0.7.0/generated/…

标签: python pandas


【解决方案1】:

总而言之,您所做的是将索引保存到文件中,当您从文件中读回时,先前保存为 index 的列将作为常规列加载。

有几种方法可以解决这个问题:

方法一

pandas.DataFrame 保存到磁盘时,请像这样使用index=False

df.to_csv(path, index=False)

方法二

从文件读取时,可以定义要用作索引的列,如下所示:

df = pd.read_csv(path, index_col='index')

方法三

如果方法 #2 由于某种原因不适合您,您可以随时将列设置为稍后用作索引,如下所示:

df.set_index('index', inplace=True)

此时,您的数据名应如下所示:

        userid    locale    age
index
    0    A1092     EN-US     31
    1    B9032     SV-SE     23

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    将 DataFrame 保存到 CSV 文件 (df.to_csv('...', index=False)) 时不要写入索引,或者如果您必须处理无法更改/编辑的 CSV 文件,请使用 usecols 参数:

    A = pd.read_csv('/path/to/fileA.csv', usecols=['userid','locale'])
    

    为了摆脱Unnamed:0列...

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2017-02-20
      • 2022-11-29
      • 2017-11-27
      • 1970-01-01
      • 2014-11-23
      • 2018-03-15
      • 2020-07-04
      • 2021-08-15
      相关资源
      最近更新 更多