【发布时间】:2018-05-13 21:17:57
【问题描述】:
我想将DataFrame 对象存储为行列的值:
这是我想要达到的目标的简化类比。
>>> df = pd.DataFrame([[1,2,3],[2,4,6]], columns=list('DEF'))
>>> df
166: D E F
0 1 2 3
1 2 4 6
我创建了一个新的 DataFrame,并在插入新的 DataFrame 对象作为新列的值时添加了一个新列。请参考代码。
>>> df_in_df = pd.DataFrame([[11,13,17],[19, 23, 31]], columns=list('XYZ'))
>>> df.loc[df['F'] == 6, 'G'] = df_in_df
>>> df
D E F G
0 1 2 3 NaN
1 2 4 6 NaN
>>> df.loc[df['F'] == 6, 'G'].item()
nan
>>> # But the below works fine, i.e. when I insert an integer
>>> df.loc[df['F'] == 6, 'G'] = 4
>>> df
>>> D E F G
0 1 2 3 NaN
1 2 4 6 4.0
>>> # and to verify
>>> df.loc[df['F'] == 6, 'G'].item()
4.0
顺便说一句,我已经设法通过将 DataFrame 酸洗成一个字符串来解决这个问题,但我对此感觉不好:
df.loc[df['F'] == 6, 'G'] = pickle.dumps(df_in_df)
>>> df
187: D E F G
0 1 2 3 NaN
1 2 4 6 ccopy_reg\n_reconstructor\np0\n(cpandas.core.f...
>>> revive_df_from_df = pickle.loads(df.loc[df['F'] == 6, 'G'].item())
>>> revive_df_from_df
191: X Y Z
0 11 13 17
1 19 23 31
在 10 分钟内通过 pandas 参考后,我今天开始使用 pandas,所以我不知道约定,有更好的想法吗? 谢谢!
【问题讨论】:
-
很难理解你要达到什么目标——你在说panels吗?
-
我想在特定行的列中插入一个 DataFrame 对象。
-
您为什么要这样做? Pandas 应该是一个快速的表查询框架。