gpt4 book ai didi

python - 有选择地替换 DataFrames 列名称

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:29 25 4
gpt4 key购买 nike

我在 .csv 文件中有一个时间序列数据集,我想用 Pandas 处理它(使用 Canopy)。文件中的列名称是字符串和同位素数字的混合。

    cycles      40   38.02   35.98      P4
0 1 1.1e-8 4.4e-8 7.7e-8 8.8e-7
1 2 2.2e-8 5.5e-8 8.8e-8 8.7e-7
2 3 3.3e-8 6.6e-8 9.9e-8 8.6e-7

我希望这个 DataFrame 看起来像这样

    cycles      40      38      36      P4
0 1 1.1e-8 4.4e-8 7.7e-8 8.8e-7
1 2 2.2e-8 5.5e-8 8.8e-8 8.7e-7
2 3 3.3e-8 6.6e-8 9.9e-8 8.6e-7

.csv 文件并不总是具有完全相同的列名称;每个文件的数字可能略有不同。为了处理这个问题,我对列名进行了采样,并将值四舍五入到最接近的整数。这是我的代码到目前为止的样子:

import pandas as pd
import numpy as np

df = {'cycles':[1,2,3],'40':[1.1e-8,2.2e-8,3.3e-8],'38.02':[4.4e-8,5.5e-8, 6.6e-8],'35.98':[7.7e-8,8.8e-8,9.9e-8,],'P4':[8.8e-7,8.7e-7,8.6e-7]}
df = pd.DataFrame(df, columns=['cycles', '40', '38.02', '35.98', 'P4'])

colHeaders = df.columns.values.tolist()
colHeaders[1:4] = list(map(float, colHeaders[1:4]))
colHeaders[1:4] = list(map(np.around, colHeaders[1:4]))
colHeaders[1:4] = list(map(int, colHeaders[1:4]))
colHeaders = list(map(str, colHeaders))

我尝试了 df.rename(columns={df.loc[ 1 ]:colHeaders[ 0 ]}, ...),但出现此错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed

我已阅读 this帖子以及 pandas 0.17 文档,但我不知道如何使用它来选择性地替换列名称,而不需要我手动分配新的列名称,如 this post .

我对 Python 相当陌生,之前从未在 StackOverflow 上发过帖子,因此我们将不胜感激。

最佳答案

您可以使用方法的变体,但直接分配新列:

>>> cols = list(df.columns)
>>> cols[1:-1] = [int(round(float(x))) for x in cols[1:-1]]
>>> df.columns = cols
>>> df
cycles 40 38 36 P4
0 1 1.100000e-08 4.400000e-08 7.700000e-08 8.800000e-07
1 2 2.200000e-08 5.500000e-08 8.800000e-08 8.700000e-07
2 3 3.300000e-08 6.600000e-08 9.900000e-08 8.600000e-07
>>> df.columns
Index(['cycles', 40, 38, 36, 'P4'], dtype='object')

或者您可以传递一个函数来重命名:

>>> df = df.rename(columns=lambda x: x if x[0].isalpha() else int(round(float(x))))
>>> df.columns
Index(['cycles', 40, 38, 36, 'P4'], dtype='object')

关于python - 有选择地替换 DataFrames 列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com