我有一个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
首先,我建议每个列都有唯一的名称。进入csv文件并更改列标题的名称,或者在panda中进行更改。
使用'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( ... )
将df.append
的结果与数据帧的其余部分组合在一起。
要了解其他命令的作用,我建议逐个删除它们并查看结果。
请原谅dff
的格式。我试图从教育的角度把一切都说清楚。调整缩进以便编译代码。
您可以使用:
usecols,这有助于只读取选定的列
使用low_memory,以便我们在内部以块的形式处理文件。
import pandas as pd
data = pd.read_csv("data.csv", usecols = ['Names','Age'], low_memory = False))
print(data)
请在csv 中具有唯一的列名