Python 如何在提取列时保留索引
所以我有一个500列乘600行的文件,我想取200-400行所有列的平均值: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()函数,如下所示:
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。