相关疑难解决方法(0)

在pickle文件中保存和加载多个对象?

我有一个课程,为游戏中的玩家提供服务,创建他们和其他东西.

我需要将这些播放器对象保存在文件中以便以后使用.我尝试了pickle模块,但我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,或者我应该使用其他类,如列表,并保存和加载我的对象列表?

有没有更好的办法?

python class object pickle python-3.x

55
推荐指数
5
解决办法
7万
查看次数

获取pandas DataFrame的名称

如何获取DataFrame的名称并将其作为字符串打印?

例:

boston (分配给csv文件的var名称)

boston = read_csv('boston.csv')

print ('The winner is team A based on the %s table.) % boston
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

38
推荐指数
5
解决办法
7万
查看次数

在Pandas Dataframe中保存其他属性

我记得在MatLab的日子里使用结构化数组,你可以将不同的数据存储为主结构的属性.就像是:

a = {}
a.A = magic(10)
a.B = magic(50); etc.
Run Code Online (Sandbox Code Playgroud)

其中aA和aB彼此完全分开,允许您在a中存储不同的类型并根据需要对它们进行操作.熊猫允许我们做类似的事情,但不完全相同.

我正在使用Pandas并希望存储数据帧的属性而不实际将其放在数据帧中.这可以通过以下方式完成:

import pandas as pd

a = pd.DataFrame(data=pd.np.random.randint(0,100,(10,5)),columns=list('ABCED')

# now store an attribute of <a>
a.local_tz = 'US/Eastern'
Run Code Online (Sandbox Code Playgroud)

现在,本地时区存储在a中,但是当我保存数据帧时我无法保存此属性(即重新加载后没有a.local_tz).有没有办法保存这些属性?

目前,我只是在数据框中创建新列来保存时区,纬度,长期等信息,但这似乎有点浪费.此外,当我对数据进行分析时遇到了必须排除这些其他列的问题.

################## BEGIN EDIT ##################

使用unutbu的建议,我现在以h5格式存储数据.如上所述,将元数据作为数据帧的属性重新加载是有风险的.但是,由于我是这些文件(和处理算法)的创建者,我可以选择存储为元数据的内容和不存储的内容.在处理将进入h5文件的数据时,我选择将元数据存储在初始化为类的属性的字典中.我创建了一个简单的IO类来导入h5数据,并将元数据作为类属性.现在我可以处理我的数据帧而不会丢失元数据.

class IO():
    def __init__(self):
        self.dtfrmt = 'dummy_str'

    def h5load(self,filename,update=False):
        '''h5load loads the stored HDF5 file.  Both the dataframe (actual data) and 
        the associated metadata are stored in the H5file

        NOTE: This does not load "any" H5 
        file, it loads H5 files specifically created …
Run Code Online (Sandbox Code Playgroud)

python-2.7 pandas

24
推荐指数
3
解决办法
7131
查看次数

如何处理与熊猫数据框关联的元数据?

Q1:将元信息保存到数据帧的最佳实践是什么?我知道以下编码实践

import pandas as pd
df = pd.DataFrame([])
df.currency = 'USD'
df.measure = 'Price'
df.frequency = 'daily'
Run Code Online (Sandbox Code Playgroud)

但正如这篇文章将元信息/元数据添加到 Pandas DataFrame 中所述,这与通过应用诸如“groupby、pivot、join 或 loc”等函数而丢失信息的风险相关联,因为它们可能会返回“一个没有元数据的新 DataFrame随附的”。

这仍然有效还是在此期间对元信息处理进行了更新?为此目的对熊猫进行子类化是一种很好的编码习惯吗?

Q2:什么是替代编码实践?

我不认为构建一个单独的对象是非常合适的。使用 Multiindex 也不能说服我。假设我想将带有价格的数据框除以带有收益的数据框。使用 Multiindices 将非常复杂。

#define price DataFrame
p_index = pd.MultiIndex.from_tuples([['Apple', 'price', 'daily'],['MSFT', 'price', 'daily']])
price = pd.DataFrame([[90, 20], [85, 30], [70, 25]], columns=p_index)

# define earnings dataframe
e_index = pd.MultiIndex.from_tuples(
    [['Apple', 'earnings', 'daily'], ['MSFT', 'earnings', 'daily']])
earnings=pd.DataFrame([[5000, 2000], [5800, 2200], [5100, 3000]], 
                columns=e_index)

price.divide(earnings.values, level=1, axis=0)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我什至不确保公司指数真的匹配。我可能需要调用 pd.DataFrame.reindex() 或类似的。在我看来,这不是一个好的编码实践。 …

python finance metadata divide pandas

15
推荐指数
1
解决办法
1751
查看次数

为什么复制Pandas DataFrame后属性会丢失

为什么不能通过副本传递实例的属性?我想将该name属性传递给另一个数据帧.

import copy
df = pd.DataFrame([1,2,3])
df.name = 'sheet1'
df2 = copy.deepcopy(df)

print(f'df.name: {df.name}')
>> df.name: sheet1

print(f'df2.name: {df2.name}')
>>    AttributeError    
        ...      
      'DataFrame' object has no attribute 'name'
Run Code Online (Sandbox Code Playgroud)

同样,在创建类并从中继承时,为什么这也不起作用?

class DfWithName(pd.DataFrame):

    def __init__(self, *args, **kwargs):
        self.__init__ = super().__init__(*args, **kwargs)
        print('lol')

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        self._name = value
Run Code Online (Sandbox Code Playgroud)

并使用相同的代码:

import copy
df = DfWithName([1,2,3])
df.name = 'sheet1'
df2 = copy.deepcopy(df) 
print(f'df.name: {df2.name}')
>>    AttributeError    
        ...      
      'DataFrame' object has no attribute 'name'
Run Code Online (Sandbox Code Playgroud)

python

14
推荐指数
1
解决办法
1300
查看次数

什么是子类?

我是java新手,我正在尝试创建一个XML文档并一遍又一遍地克隆该文档的特定节点(减去textnode).有人回答我并说我应该继承节点并覆盖克隆.所以我的问题是什么是子类?

java xml clone subclassing

13
推荐指数
2
解决办法
1万
查看次数

在HDF5中存储Pandas对象以及常规Python对象

Pandas有一个很好的界面,便于在HDF5中存储Dataframes和Series等内容:

random_matrix  = np.random.random_integers(0,10, m_size)
my_dataframe =  pd.DataFrame(random_matrix)

store = pd.HDFStore('some_file.h5',complevel=9, complib='bzip2')
store['my_dataframe'] = my_dataframe
store.close()
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在同一个文件中保存一些其他常规Python对象,它会抱怨:

my_dictionary = dict()
my_dictionary['a'] = 2           # <--- ERROR
my_dictionary['b'] = [2,3,4]

store['my_dictionary'] = my_dictionary
store.close()
Run Code Online (Sandbox Code Playgroud)

TypeError: cannot properly create the storer for: [_TYPE_MAP] [group->/par
ameters (Group) u'',value-><type 'dict'>,table->None,append->False,kwargs-
>{}]                                   
Run Code Online (Sandbox Code Playgroud)

如何在我存储其他Pandas对象的同一HDF5中存储常规Python数据结构?

python hdf5 pandas

13
推荐指数
1
解决办法
5874
查看次数

如何用pyarrow编写Parquet元数据?

我使用pyarrow来创建和分析具有生物学信息的Parquet表,我需要存储一些元数据,例如,数据来自哪个样本,如何获取和处理。

Parquet似乎支持文件范围的元数据,但是我无法找到如何通过pyarrow写入它。我能找到的最接近的东西是如何编写行组元数据,但这似乎是一个过大的选择,因为文件中所有行组的元数据都是相同的。

有什么方法可以用pyarrow编写文件范围的Parquet元数据吗?

python parquet pyarrow

8
推荐指数
2
解决办法
379
查看次数

在大熊猫中标记变量?

我是熊猫的新手,来自统计学背景,我在一个概念性的问题上苦苦挣扎:熊猫有包含值的列。但是有时值具有特殊含义-在像SPSS或R这样的统计程序中,称为“标签”。

想象一下,列“ rain”具有两个值0“ no rain”和1“ raining”-是否可以将这些标签分配给列?

熊猫也有办法吗?主要用于电镀和可视化目的。

python pandas

5
推荐指数
1
解决办法
4989
查看次数

DataFrame持久性错误的Pandas _metadata

我终于弄清楚了如何从DataFrame中使用_metadata,一切正常,除了我无法持久保存它,例如hdf5或json。我知道它是可行的,因为我复制了框架,而_metadata属性则复制了“ non _metadata”属性,但没有。

df = pandas.DataFrame #make up a frame to your liking
pandas.DataFrame._metadata = ["testmeta"]
df.testmeta = "testmetaval"
df.badmeta = "badmetaval"
newframe = df.copy()
newframe.testmeta -->outputs "testmetaval"
newframe.badmeta ---> raises attribute error

#json test
df.to_json(Path)
revivedjsonframe = pandas.io.json.read_json(Path)
revivedjsonframe.testmeta ---->raises Attribute Error

#hdf5 test
revivedhdf5frame.testmeta ---> returns None
Run Code Online (Sandbox Code Playgroud)

这个人/sf/answers/1800100361/说对他有用,但是我是这个网站(和熊猫)的新手,无法发布到该主题或直接问他。

python metadata pytables pandas

5
推荐指数
2
解决办法
1134
查看次数