Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串(从字符串列表)分配给数据帧名称_Python_Pandas - Fatal编程技术网

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非常适合我的工作。