gpt4 book ai didi

python - 使用 For 循环更改 DataFrame 列 (Pandas) 中的数据

转载 作者:太空狗 更新时间:2023-10-30 02:56:47 24 4
gpt4 key购买 nike

我正在尝试从“Mathscore”中获取数据并将值转换为数值,所有这些都在“Mathscore”下。

强=1弱 = 0

我尝试使用 For 循环通过下面的函数执行此操作,但我无法运行代码。我尝试分配数据的方式不正确吗?

谢谢!

import pandas as pd

data = {'Id_Student' : [1,2,3,4,5,6,7,8,9,10],'Mathscore' :['Strong','Weak','Weak','Strong','Strong','Weak','Strong','Strong','Weak','Strong']}

df = pd.DataFrame(data)
df

# # Strong = 1 and Weak =0

##def tran_mathscore(x): if x == 'Strong': return 1 if x == 'Weak': return 0
##
##df['Trans_MathScore'] = df['Mathscore'].apply(tran_mathscore)
##df


##df.Mathscore[0]=["Weak"]

##print(df.columns)
##
##
##print(df.Mathscore)

def tran_mathscore():
for i in df.Mathscore:
if i == "Strong":
df.Mathscore[i]= ['1']

elif i == "Weak":
df.Mathscore[i]= ['0']


tran_mathscore()

最佳答案

你可以categorize您的数据:

In [23]: df['Mathscore'] = df.Mathscore.astype('category').cat.rename_categories(['1','0'])

In [24]: df
Out[24]:
Id_Student Mathscore
0 1 1
1 2 0
2 3 0
3 4 1
4 5 1
5 6 0
6 7 1
7 8 1
8 9 0
9 10 1

In [25]: df.dtypes
Out[25]:
Id_Student int64
Mathscore category
dtype: object

或映射它:

In [27]: df
Out[27]:
Id_Student Mathscore
0 1 Strong
1 2 Weak
2 3 Weak
3 4 Strong
4 5 Strong
5 6 Weak
6 7 Strong
7 8 Strong
8 9 Weak
9 10 Strong

In [28]: df.Mathscore.map(d)
Out[28]:
0 1
1 0
2 0
3 1
4 1
5 0
6 1
7 1
8 0
9 1
Name: Mathscore, dtype: int64

In [29]: d
Out[29]: {'Strong': 1, 'Weak': 0}

In [30]: df['Mathscore'] = df.Mathscore.map(d)

In [31]: df
Out[31]:
Id_Student Mathscore
0 1 1
1 2 0
2 3 0
3 4 1
4 5 1
5 6 0
6 7 1
7 8 1
8 9 0
9 10 1

In [32]: df.dtypes
Out[32]:
Id_Student int64
Mathscore int64
dtype: object

PS 我更喜欢第一个选项,因为 categorical dtype 使用的内存少得多

关于python - 使用 For 循环更改 DataFrame 列 (Pandas) 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378535/

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