Python 如何在提取列时保留索引

Python 如何在提取列时保留索引,python,csv,pandas,Python,Csv,Pandas,所以我有一个500列乘600行的文件,我想取200-400行所有列的平均值: df = pd.read_csv('file.csv', sep= '\s+') sliced_df=df.iloc[200:400] 然后创建一个包含所有列中所有行的平均值的新列。并仅提取新创建的列: sliced_df['mean'] = sliced_df.mean(axis=1) final_df = sliced_df['mean'] 但是,在提取新列时,如何防止索引重置 使用copy()函数,如下所示:

所以我有一个500列乘600行的文件,我想取200-400行所有列的平均值:

df = pd.read_csv('file.csv', sep= '\s+')
sliced_df=df.iloc[200:400]
然后创建一个包含所有列中所有行的平均值的新列。并仅提取新创建的列:

sliced_df['mean'] = sliced_df.mean(axis=1)
final_df = sliced_df['mean']
但是,在提取新列时,如何防止索引重置

使用copy()函数,如下所示:

df = pd.read_csv('file.csv', sep= '\s+')
sliced_df=df.iloc[200:400].copy()
sliced_df['mean'] = sliced_df.mean(axis=1)
final_df = sliced_df['mean'].copy()

我认为没有必要在
sliced_df
中创建新列,只需要
系列的名称
,如果需要输出为
数据帧
添加。索引未重置,请参见下面的示例:

#random dataframe
np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(5,5)), columns=list('ABCDE'))
print (df)
   A  B  C  D  E
0  8  8  3  7  7
1  0  4  2  5  2
2  2  2  1  0  8
3  4  0  9  6  2
4  4  1  5  3  4

#in real data use df.iloc[200:400]
sliced_df=df.iloc[2:4]
print (sliced_df)
   A  B  C  D  E
2  2  2  1  0  8
3  4  0  9  6  2

final_ser = sliced_df.mean(axis=1).rename('mean')
print (final_ser)
2    2.6
3    4.2
Name: mean, dtype: float64

final_df = sliced_df.mean(axis=1).rename('mean').to_frame()
print (final_df)
   mean
2   2.6
3   4.2
Python从
0
开始计数,因此可能需要将切片从
200:400
更改为
100:300
,请参见差异:

sliced_df=df.iloc[1:3]
print (sliced_df)
   A  B  C  D  E
1  0  4  2  5  2
2  2  2  1  0  8

final_ser = sliced_df.mean(axis=1).rename('mean')
print (final_ser)
1    2.6
2    2.6
Name: mean, dtype: float64

final_df = sliced_df.mean(axis=1).rename('mean').to_frame()
print (final_df)
   mean
1   2.6
2   2.6

这是我认为的答案。@piRSquared-谢谢你。天哪。。。我妻子会发疯的。天气冷到零下五度,持续了大约一周。现在大约是0到10。