Python 将字符串(从字符串列表)分配给数据帧名称
我有一个名称列表,Python 将字符串(从字符串列表)分配给数据帧名称,python,pandas,Python,Pandas,我有一个名称列表,['name1'、'name2'、…'nameN'],在for循环中按每个名称过滤原始数据帧后,我希望将其用作结果数据帧的名称 name1 = originaldf[originaldf.names = 'name1'] python中是否有一个类似于R中赋值的函数,我可以使用它来实现这一点。欢迎任何其他解决方案 按要求。以下是一个例子: names = ['name1', 'name2', 'name3'] f = pd.DataFrame({'names' : np.r
['name1'、'name2'、…'nameN']
,在for循环中按每个名称过滤原始数据帧后,我希望将其用作结果数据帧的名称
name1 = originaldf[originaldf.names = 'name1']
python中是否有一个类似于R中赋值的函数,我可以使用它来实现这一点。欢迎任何其他解决方案
按要求。以下是一个例子:
names = ['name1', 'name2', 'name3']
f = pd.DataFrame({'names' : np.random.choice(names, size=15)})
name1 = df[df.names=='name1']
name2 = df[df.names=='name2']
name3 = df[df.names=='name3']
# Then:
display(name1, name2, name3)
names
1 name1
2 name1
3 name1
4 name1
5 name1
names
0 name2
7 name2
names
6 name3
8 name3
9 name3
10 name3
11 name3
12 name3
13 name3
14 name3
您可以使用setattr实现这一点,但我(和其他人一样)强烈建议使用字典
import sys
import pandas as pd
thismodule = sys.modules[__name__]
names = ['name1', 'name2', 'name3']
for i in names:
setattr(thismodule, i,df[df.names==i])
display(name1,name2,name3)
这将为名称中的每个值设置一个数据帧您可以使用setattr,但我(和其他人一样)强烈建议使用字典
import sys
import pandas as pd
thismodule = sys.modules[__name__]
names = ['name1', 'name2', 'name3']
for i in names:
setattr(thismodule, i,df[df.names==i])
display(name1,name2,name3)
这将为名称中的每个值设置一个数据帧我也遇到了同样的问题。在Python中,要基于存储为字符串的名称创建数据帧,可以使用globals()如下所示:
name = 'name1'
globals()[name] = df
在本例中,df是您试图重命名的数据帧的副本,因此在您的示例中,应该是:
names = ['name1', 'name2', 'name3']
for n in names:
globals()[n] = df[df.names==n]
我也有同样的问题。在Python中,要基于存储为字符串的名称创建数据帧,可以使用globals()如下所示:
name = 'name1'
globals()[name] = df
在本例中,df是您试图重命名的数据帧的副本,因此在您的示例中,应该是:
names = ['name1', 'name2', 'name3']
for n in names:
globals()[n] = df[df.names==n]
请提供一个可重复的示例,并输出期望的输出。也许考虑将它们存储在字典中,键的名称和值是DATAFAMESE,这能回答您的问题吗?请提供一个可重复的示例,并输出期望的输出。也许考虑将它们存储在字典中,键的名称和值是DATAFAMESE,这能回答您的问题吗?谢谢你的回答。你能分享使用dictionary方法而不是setattr方法的理由吗?拥有dictionary的主要实际原因是它简化了使用许多数据帧的问题。比如“每帧的最大值是多少?”。引用帧的方法是使用dictionary的d[“name1”]和使用setattr的name1。这并不难,谢谢。我认为setattr非常适合我的工作。谢谢你的回答。你能分享使用dictionary方法而不是setattr方法的理由吗?拥有dictionary的主要实际原因是它简化了使用许多数据帧的问题。比如“每帧的最大值是多少?”。引用帧的方法是使用dictionary的d[“name1”]和使用setattr的name1。这并不难,谢谢。我认为setattr非常适合我的工作。