pandas中.set_index()后,如何再把索引列作为正常列
时间: 2024-05-04 19:16:42 浏览: 151
您可以使用`.reset_index()`方法将索引列转换回正常列。具体来说,使用以下代码即可将`df`的索引列转换回正常列:
```python
df = df.set_index('索引列')
df = df.reset_index()
```
其中,`索引列`是您之前使用`.set_index()`方法设置的索引列的名称。此操作将在`df`中添加一个新的默认索引列,并将之前的索引列重命名为普通列。
相关问题
import numpy as np import pandas as pd from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler from scipy.spatial.distance import cdist import matplotlib.pyplot as plt from pandas import DataFrame from sklearn.decomposition import PCA plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 pd.set_option('display.max_rows', None)#显示全部行 pd.set_option('display.max_columns', None)#显示全部列 np.set_printoptions(threshold=np.inf) pd.set_option('display.max_columns', 9000) pd.set_option('display.width', 9000) pd.set_option('display.max_colwidth', 9000) df = pd.read_csv(r'附件1.csv',encoding='gbk') X = np.array(df.iloc[:, 1:]) X=X[0:,1:] k=93 kmeans_model = KMeans(n_clusters=k, random_state=123) fit_kmeans = kmeans_model.fit(X) # 模型训练 #查看聚类结果 kmeans_cc = kmeans_model.cluster_centers_ # 聚类中心 print('各类聚类中心为:\n', kmeans_cc) kmeans_labels = kmeans_model.labels_ # 样本的类别标签 print('各样本的类别标签为:\n', kmeans_labels) r1 = pd.Series(kmeans_model.labels_).value_counts() # 统计不同类别样本的数目 print('最终每个类别的数目为:\n', r1) # 输出聚类分群的结果 # cluster_center = pd.DataFrame(kmeans_model.cluster_centers_, # columns=[ str(x) for x in range(1,94)]) # 将聚类中心放在数据框中 # cluster_center.index = pd.DataFrame(kmeans_model.labels_). \ # drop_duplicates().iloc[:, 0] # 将样本类别作为数据框索引 # print(cluster_center)代码解释
这段代码主要是使用KMeans算法对一个数据集进行聚类分析,并输出聚类结果。下面是代码的解释:
1. 导入所需的库
```python
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt
from pandas import DataFrame
from sklearn.decomposition import PCA
```
2. 读取数据集
```python
df = pd.read_csv(r'附件1.csv',encoding='gbk')
X = np.array(df.iloc[:, 1:])
X=X[0:,1:]
```
3. 使用KMeans算法进行聚类分析
```python
k=93
kmeans_model = KMeans(n_clusters=k, random_state=123)
fit_kmeans = kmeans_model.fit(X)
```
4. 输出聚类结果
```python
kmeans_cc = kmeans_model.cluster_centers_
print('各类聚类中心为:\n', kmeans_cc)
kmeans_labels = kmeans_model.labels_
print('各样本的类别标签为:\n', kmeans_labels)
r1 = pd.Series(kmeans_model.labels_).value_counts()
print('最终每个类别的数目为:\n', r1)
```
上述代码中,kmeans_cc表示各个类别的聚类中心,kmeans_labels表示每个样本所属的类别,r1表示每个类别的样本数目。
5. 将聚类中心放在数据框中
```python
# cluster_center = pd.DataFrame(kmeans_model.cluster_centers_,
# columns=[ str(x) for x in range(1,94)])
# 将聚类中心放在数据框中
# cluster_center.index = pd.DataFrame(kmeans_model.labels_). \
# drop_duplicates().iloc[:, 0]
# 将样本类别作为数据框索引
# print(cluster_center)
```
这段代码是将聚类中心放在数据框中,并以样本类别作为索引。但是,这段代码被注释掉了,因此不会被执行。
import pandas as pd import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams['axes.unicode_minus'] = False df = pd.read_csv('merged_sentiment_idx.csv', parse_dates=['created_time']) df.set_index(df.created_time, inplace=True) df = df.loc['2017-4-15':'2018-4-15'] fig, ax1 = plt.subplots() ax2 = ax1.twinx() ax1.plot(df.index, df['BI_MA'], color='#1F77B4', linestyle=':') ax2.plot(df.index, df['close'], color='#4B73B1') ax1.set_xlabel('日期') ax1.set_ylabel('BI指标') ax2.set_ylabel('上证指数') plt.show()
这是一个使用Pandas、Numpy、Matplotlib库进行数据分析和可视化的Python代码。首先,从'merged_sentiment_idx.csv'文件中读取数据并设置时间戳为索引,然后选择了2017年4月15日至2018年4月15日的数据。接着,使用Matplotlib库绘制了双y轴图,左侧y轴对应BI指标,右侧y轴对应上证指数。其中,BI指标数据用蓝色虚线表示,上证指数用蓝色实线表示。最后,使用plt.show()函数展示了图形。
阅读全文