首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Python上使用熊猫导入后,来自df的同名成对列会被更改?

为什么在Python上使用熊猫导入后,来自df的同名成对列会被更改?
EN

Stack Overflow用户
提问于 2022-01-28 08:20:59
回答 1查看 58关注 0票数 1

今天我意识到了一些非常奇怪的事情,我有一个.csv文件,其中包含一个df,在使用Excel打开时显示如下所示

Python3x上执行以下代码后,人们可能会想到

代码语言:javascript
复制
import pandas as pd
metadata_file_path = r'C:\Users\ResetStoreX\Pictures\Metadata.csv'

df_metadata = pd.read_csv(metadata_file_path, index_col=0)
print(df_metadata)

预期的输出应该是低于

代码语言:javascript
复制
            0     0    1    1      2          2         3        3     4    4      5    5         
0  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes None            
1  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Brown     
2  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Green    
3  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Purple    
4  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Sand    

然而,最终变成了这个,而不是

代码语言:javascript
复制
            0   0.1    1  1.1      2        2.1         3      3.1     4  4.1      5   5.1         
0  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes None            
1  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Brown     
2  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Green    
3  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Purple    
4  Background Ocean Body Crab Colour Dark green Eyes type Antennae Claws None Spikes Sand  

可以看到,相同名称的列在导入时被Pandas (或Python)修改,因此将其添加到下一列,其名称与前一列相同。

我不明白为什么会发生这种情况,如果可能的话,我想知道一种防止这种意外修改的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-28 08:31:59

熊猫read_*方法总是防止重复的列名,因为选择存在问题。

如果使用df[0],它会选择两列,而不是一列。

对于原始列,可以使用名称:

代码语言:javascript
复制
df.columns = df.columns.str.split('.').str[0].astype(int)

另一种方法是在.之前使用第一个值来分组而不更改列名:

代码语言:javascript
复制
row = 0
d = {x.iat[0]: x.iat[1] for name, x in df.iloc[row].groupby(lambda x: x.split('.')[0], level=0)}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70890672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档