如何在Python中使用Pandas连接CSV文件中的列

2024-09-27 00:17:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,看起来像这样:

# data.csv (this line is not there in the file)
Names, Age, Names
John, 5, Jane
Rian, 29, Rath

当我用Python通过Pandas阅读时,我得到了如下结果:

import pandas as pd

data = pd.read_csv("data.csv")
print(data)

程序的输出为:

  Names   Age  Names
0  John     5   Jane
1  Rian    29   Rath

有没有办法得到:

  Names   Age  
0  John     5   
1  Rian    29   
2  Jane
3  Rath

Tags: 文件csvagedatanamesislinenot
2条回答

首先,我建议为每一列指定唯一的名称。进入csv文件并更改列标题的名称,或者在pandas中进行更改

使用'Names2'作为第二次出现相同列名的列的标题,尝试以下操作:

datalist = [['John', 5, 'Jane'], ['Rian', 29, 'Rath']]
df = pd.DataFrame(datalist, columns=['Names', 'Age', 'Names2'])

我们有

  Names  Age Names
0  John    5  Jane
1  Rian   29  Rath

因此,请使用:

dff = pd.concat([df['Names'].append(df['Names2'])
                                    .reset_index(drop=True), 
                 df.iloc[:,1]], ignore_index=True, axis=1)
                .fillna('').rename(columns=dict(enumerate(['Names', 'Ages'])))

为了得到你想要的结果

由内而外:
df.append组合列
pd.concat( ... )将{}的结果与数据帧的其余部分合并

要了解其他命令的作用,我建议逐个删除它们并查看结果

请原谅dff的格式设置。我试图从教育的角度把一切都说清楚。 调整缩进,使代码能够编译

您可以使用:
使用cols,这有助于只读取选定的列
使用低内存,以便我们在内部分块处理文件

import pandas as pd

data = pd.read_csv("data.csv", usecols = ['Names','Age'], low_memory = False))
print(data)

请在csv中使用唯一的列名

相关问题 更多 >

    热门问题