df = pd.DataFrame(columns=['0', '90', '180', '270']) df.loc[0] = contrast[0] df.loc[1] = dissimilarity[0] df.loc[2] = homogeneity[0] df.loc[3] = energy[0] df.loc[4] = correlation[0] df.loc[5] = asm[0] abb = ['contrast', 'dissimilarity', 'homogeneity', 'energy', 'correlation', 'asm'] for j in range(len(abb)): abb[j] = abb[j] + i[:-4] df.index = abb if df_sum is not None: df_sum = pd.concat((df_sum,df),axis=1) else : df_sum = df return df_sum 为什么沿列方向拼接不对,我的列增加了
时间: 2024-04-12 13:30:50 浏览: 157
根据您提供的代码,我注意到您正在迭代处理一些数据并沿列方向拼接 DataFrame。在每次迭代中,您都使用 `pd.concat` 沿列方向拼接 DataFrame。然而,由于每次迭代都创建了一个新的 DataFrame `df`,因此在拼接时会将新的 DataFrame 添加为新的列。
要解决这个问题,您可以将每个新的 DataFrame 存储在一个列表中,并在循环结束后使用 `pd.concat` 沿列方向拼接所有 DataFrame。这样,您将获得一个包含所有迭代结果的 DataFrame。下面是修改后的代码示例:
```python
import pandas as pd
df_sum = None
dfs = [] # 存储每个迭代结果的列表
for i in your_iteration:
df = pd.DataFrame(columns=['0', '90', '180', '270'])
df.loc[0] = contrast[0]
df.loc[1] = dissimilarity[0]
df.loc[2] = homogeneity[0]
df.loc[3] = energy[0]
df.loc[4] = correlation[0]
df.loc[5] = asm[0]
abb = ['contrast', 'dissimilarity', 'homogeneity', 'energy', 'correlation', 'asm']
for j in range(len(abb)):
abb[j] = abb[j] + i[:-4]
df.index = abb
dfs.append(df) # 将当前迭代结果添加到列表中
df_sum = pd.concat(dfs, axis=1) # 沿列方向拼接所有 DataFrame
return df_sum
```
在上述示例中,我添加了一个名为 `dfs` 的空列表来存储每个迭代结果的 DataFrame。在每次迭代中,将当前迭代结果的 DataFrame 添加到 `dfs` 列表中。在循环结束后,使用 `pd.concat(dfs, axis=1)` 将所有 DataFrame 沿列方向拼接在一起,从而得到最终的 DataFrame `df_sum`。
阅读全文