如何摆脱 Pandas 中的第二个索引列? (Python)

Posted

技术标签:

【中文标题】如何摆脱 Pandas 中的第二个索引列? (Python)【英文标题】:How do I get rid of the second indexing column in Pandas? (Python) 【发布时间】:2019-05-05 08:49:04 【问题描述】:

我正在尝试制作工资与时间的关系图。这是我得到的:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('Pay051118_1.csv')
df.to_csv("Newcsv", columns = ['Dates worked', 'Pay'])
df = pd.read_csv('Newcsv', parse_dates = True, index_col = 0)

df = df.fillna(0)

df = ((df[['Dates worked','Pay']])[df.Pay > 1])
print (df)

df.plot()
plt.show()

代码的第 5 行为我删除了其中一个索引列。如果不输入 parse_dates 和 index_col 参数,我将获得 2 列索引。当我打印 (df) 时,这就是我得到的:

                   Dates worked   Pay
0       Monday, 5 November 2018  44.5
2    Wednesday, 7 November 2018  44.5
3     Thursday, 8 November 2018  44.5
4       Friday, 9 November 2018  44.5
6      Sunday, 11 November 2018  50.5
7      Monday, 12 November 2018  62.0
8     Tuesday, 13 November 2018  38.5
9   Wednesday, 14 November 2018  65.5
10   Thursday, 15 November 2018  62.0
16  Wednesday, 21 November 2018  65.5
17   Thursday, 22 November 2018  62.0
18     Friday, 23 November 2018  65.5
20     Sunday, 25 November 2018  62.5
21     Monday, 26 November 2018  58.5
22    Tuesday, 27 November 2018  42.0
23  Wednesday, 28 November 2018  65.5
25     Friday, 30 November 2018  62.0

如您所见,索引列仍然存在。我怎样才能摆脱它?

【问题讨论】:

数据框总是有一个索引,你可以做的就是将它重置为其他东西,例如日期。这可以通过df.set_index来实现。 您好,您不需要导入、导出和重新导入 CSV。您可以在导入时选择列。请参阅 pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table。之后,请参阅pandas.pydata.org/pandas-docs/stable/generated/…。我们无权访问您的 csv。 Could pandas use column as index?的可能重复 【参考方案1】:

使用下面的一个。这将打印您不想看到的最左边的数字行。

print df.to_string(index=False)

【讨论】:

谢谢,它成功了。但是顺便说一句,为什么我们必须只使用 df.to_string 代码?转成字符串有什么作用? 它将 DataFrame 渲染到控制台友好的表格输出。你可以参考下面的链接。 pandas.pydata.org/pandas-docs/stable/generated/…【参考方案2】:

Pandas 数据框总是有一个索引,但它不是真正的列,如果你想用简单的序号替换索引,请使用df.reset_index()

【讨论】:

您好,这似乎不起作用。我将您的行插入到 df.Pay > 1 之后的代码行中,但我仍然得到相同的输出,索引未重置。 将其分配给 df。即 df=df.reset_index()【参考方案3】:
"""
Dates worked,Pay
Monday 5 November 2018,44.5
Wednesday 7 November 2018,44.5
Thursday 8 November 2018,44.5
Friday 9 November 2018,44.5
"""
import pandas as pd
pd.read_clipboard(sep=",").set_index("Dates worked")

如果您不想要自动生成的索引,则需要将其他列设置为索引。

【讨论】:

以上是关于如何摆脱 Pandas 中的第二个索引列? (Python)的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱从 CSV 文件读取的 pandas DataFrame 中的“未命名:0”列?

Pandas 基于索引/列组合合并 DataFrame

如何将两个熊猫列混合到一个数据框中,第一列的第一个元素,第二列的第二个元素等等? [复制]

如何从 Pandas 日期时间索引中删除尾随零(根据需要格式化)?

在 Pandas 中合并数据框(没有列名)

在以下情况下,如何在第二个 for 循环中访问 (i+1 ) 索引?