Python 如何以合并(连接)同名列的方式导入csv文件?
我有一个csv文件,其中每个列名存在三次。也就是说,对于文件中找到的每个列标题/名称,都有三个同名的不同列集。下面是此文件的简化版本Python 如何以合并(连接)同名列的方式导入csv文件?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个csv文件,其中每个列名存在三次。也就是说,对于文件中找到的每个列标题/名称,都有三个同名的不同列集。下面是此文件的简化版本 X Y Z X Y Z X Y Z 0 1 1 1 3 3 3 5 5 5 1 2 2 2 4 4 4 6 6 6 从本质上讲,我试图做的是导入此文件,但也将具有相同名称的列组合在一起,因此它看起来像: 我遇到的主要问题是,当我使用df=pd.read\u csv(file)导入此文件时,它会自动为重
X Y Z X Y Z X Y Z
0 1 1 1 3 3 3 5 5 5
1 2 2 2 4 4 4 6 6 6
从本质上讲,我试图做的是导入此文件,但也将具有相同名称的列组合在一起,因此它看起来像:
我遇到的主要问题是,当我使用df=pd.read\u csv(file)
导入此文件时,它会自动为重复的列名添加后缀,这样我就无法使用我在网上看到的其他潜在修复(主要与groupby有关)。我还尝试设置参数df=pd.read\u csv(file,header=None)
,看看是否可以做些什么,但是一旦我有了无头数据帧,我就立即迷路了
有人能帮我找到一个好方法吗?试试
melt
然后用cumcount
添加额外的列,然后pivot
返回
s = df.melt()
s['v'] = s.groupby('variable').cumcount()
out = s.pivot('v','variable','value')
out
Out[75]:
variable X Y Z
v
0 1 1 1
1 2 2 2
2 3 3 3
3 4 4 4
4 5 5 5
5 6 6 6
根据后缀的添加方式,您可以这样做来重命名它们
new_cols = []
for col in df.columns:
new_cols.append(col.split('_')[0])
df.columns = new_cols
在split()方法中,只需使用read_excel提供的内容(可以是.或u或其他内容)在没有pandas的情况下读取csv,移动内容,然后转换为pandas dataframe
new_cols = []
for col in df.columns:
new_cols.append(col.split('_')[0])
df.columns = new_cols