假设我有两个CSV文件,第一个文件input_1.csv
有一个索引列,所以当我运行:
import pandas as pd
df_1 = pd.read_csv("input_1.csv")
df_1
我得到了一个DataFrame,它有一个索引列,还有一个名为Unnamed: 0
的列,它与索引列相同。我可以通过添加参数index_col=0
来防止这种重复,一切都很好。
第二个文件input_2.csv
没有索引列,即如下所示:
| stuff | things |
|--------:|---------:|
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
| 5 | 50 |
运行pd.read_csv("input_2.csv")
会得到一个带有索引列的DataFrame。在本例中,添加index_col=0
参数会将索引列中的设置为stuff
,就像CSV文件本身一样。
我的问题是,我有一个包含read_csv
部分的函数,我希望它在两种情况下都返回一个带有索引列的DataFrame。有没有办法检测输入文件是否有索引列,如果没有就设置一个,如果有就什么都不做?
2条答案
按热度按时间ffvjumwh1#
CSV没有内置的“索引”列的概念,所以我认为答案是一般情况下这是不可能的。
如果你能说“只有在未命名的情况下才使用0作为索引”,那就太好了,但是Pandas没有给予我们这个选项。
因此,您可能只需要检查是否出现
Unnamed:
列,并将这些列设置为索引。fykwrbwg2#
我希望您所说的index是指序列号从
0
或1
开始的列。您可以使用某种导入后逻辑来决定第一列是否符合索引列的条件:
其逻辑是,如果默认索引和第一列之间的差异对于所有行都相同,则第一列包含递增序列(从任何数字开始)。前提条件是该列应为数字。
例如: