提问人:Serena 提问时间:10/22/2023 最后编辑:Trenton McKinneySerena 更新时间:11/19/2023 访问量:83
循环访问列表中的字符串值
Loop over string values from a list
问:
我正在尝试使用列表中的字符串值遍历一行代码: (我正在尝试加入我从 pandas 获得的虚拟变量。 get_dummies原始数据帧。 var1、2、3 是虚拟变量)
没有循环:
df.index = var1.index
df = df.join(var1)
df.index = var2.index
df = df.join(var2)
df.index = var3.index
df = df.join(var3)
为了减少冗余编码,我试图将它们放入一个循环中:
dummmies = ['var1', 'var2', 'var3']
for item in dummies:
df.index = item + '.index'
df = df.join(item)
这会产生一个错误,指出必须使用某种集合“var1.index”来调用 Index(...)。
你能帮我解决这个问题吗? 我有多个假人要加入,我真的很想让这个循环工作。 谢谢!!
答:
0赞
JimOfAllTrades
10/22/2023
#1
如果你不使用字符串,而是使用实际变量,你应该实现你想要的:
dummmies = [var1, var2, var3]
for item in dummies:
df.index = item.index
df = df.join(item)
如果你真的希望初始列表是字符串,请查看这个问题,其中包含所有列出的警告。例如,如果变量是全局变量,则可以执行以下操作:
dummmies = ['var1', 'var2', 'var3']
for item_name in dummies:
item = globals()[item_name]
df.index = item.index
df = df.join(item)
评论
0赞
Serena
10/29/2023
工作!!泰斯姆!!
0赞
Ömer Sezer
10/22/2023
#2
“concat”函数可以以最短的方式帮助您:
df = pd.concat([df, var1, var2, var3], axis=1)
示例代码:
import pandas as pd
# sample
data = {
'Category': ['A', 'B', 'C'],
'Value': [10, 20, 15]
}
df = pd.DataFrame(data)
# samples
var1 = pd.get_dummies(df['Category'], prefix='var1')
var2 = pd.get_dummies(df['Category'], prefix='var2')
var3 = pd.get_dummies(df['Category'], prefix='var3')
df = pd.concat([df, var1, var2, var3], axis=1)
print(df)
输出:
Category Value var1_A var1_B var1_C var2_A var2_B var2_C var3_A var3_B var3_C
0 A 10 True False False True False False True False False
1 B 20 False True False False True False False True False
2 C 15 False False True False False True False False True
评论
1赞
Ömer Sezer
10/24/2023
@Oca我删除了图片,并添加了文字而不是它
0赞
Serena
10/29/2023
工作!!没有循环和更简单的代码行。泰斯姆!!
0赞
Ömer Sezer
10/29/2023
@serena如果你喜欢这个解决方案,如果你投赞成票或接受它,我会很高兴,谢谢。
评论
df.index = var1.index