Python dataframe:按索引交换列标题

Python dataframe:按索引交换列标题,python,pandas,dataframe,multiple-columns,Python,Pandas,Dataframe,Multiple Columns,我使用熊猫数据框来绘制csv。用分光计获取的数据 df = pd.read_csv("C:\\file.csv") # import file 输出表始终由对组成 样本1 未名:1 样本2 未名:2 ... 波长 传输1 波长 传输2 ... 我不确定您的确切意思(示例表中的一些模拟数据会很好),但假设现在每一行都是一个单独的数据帧,每两列都是示例,是否需要这样做 # sample data df = pd.DataFrame({ 'sample1':[23.1,

我使用熊猫数据框来绘制csv。用分光计获取的数据

df = pd.read_csv("C:\\file.csv") # import file
输出表始终由对组成

样本1 未名:1 样本2 未名:2 ... 波长 传输1 波长 传输2 ...
我不确定您的确切意思(示例表中的一些模拟数据会很好),但假设现在每一行都是一个单独的数据帧,每两列都是示例,是否需要这样做

# sample data
df = pd.DataFrame({
    'sample1':[23.1, 12.2, 15.8],
    'Unnamed:1':['alpha','beta','gamma'],
    'sample2':[12.1, 13.4, 11.1],
    'Unnamed:2':['alpha','beta','gamma'],
    'sample3':[0.1,0.43,0.29],
    'Unnamed:3':['alpha','beta','gamma']
})
样本1 未名:1 样本2 未名:2 样本3 未名:3 0 23.1 阿尔法 12.1 阿尔法 0.1 阿尔法 1. 12.2 贝塔 13.4 贝塔 0.43 贝塔 2. 15.8 伽马射线 11.1 伽马射线 0.29 伽马射线
您可以最容易地操纵这些值,而不是作为一个整体操纵数据帧

假设您的数据是:

import pandas as pd
# Example data
df = pd.DataFrame([["sample 1", "Unnamed:1", "sample 2", "Unnamed:2"], [0.614, "transmission 1", 0.68168, "transmission 2"]])
0 1. 2. 3. 0 样本1 未名:1 样本2 未名:2 1. 0.614 传输1 0.68168 传输2
可以将列标签分为两部分:偶数列和奇数列。然后,在每对奇偶编号的列中交换它们的序列,如下所示:

swapped_cols = np.ravel([[y, x] for x, y in zip(df.columns[0::2], df.columns[1::2])])
这里,
df.columns[0::2]
df.columns[1::2]
包含偶数列和奇数列

print(swapped_cols)

['Unnamed:1' 'sample 1' 'Unnamed:2' 'sample 2']
案例1:如果只想交换列标签,而不交换列内容,可以执行以下操作:

df.columns = swapped_cols
df = df[swapped_cols]
结果

print(df)

     Unnamed:1        sample 1    Unnamed:2        sample 2
0  wavelengths  transmission 1  wavelengths  transmission 2
print(df)

        Unnamed:1     sample 1       Unnamed:2     sample 2
0  transmission 1  wavelengths  transmission 2  wavelengths
案例2:如果要交换列序列(同时交换列标签和列内容),可以执行以下操作:

df.columns = swapped_cols
df = df[swapped_cols]
结果

print(df)

     Unnamed:1        sample 1    Unnamed:2        sample 2
0  wavelengths  transmission 1  wavelengths  transmission 2
print(df)

        Unnamed:1     sample 1       Unnamed:2     sample 2
0  transmission 1  wavelengths  transmission 2  wavelengths

我没有得到你真正想要的。如果需要使用列名进行筛选,请使用:
df.filter(like='samp')
您的数据帧是否只有一行?是否需要类似以下内容:?