Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 Pandas read_csv():列包含数据帧,但被读取为字符串_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python Pandas read_csv():列包含数据帧,但被读取为字符串

Python Pandas read_csv():列包含数据帧,但被读取为字符串,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据帧df1,由56行9列组成,一列['Matrix']包含每个单元格的数据帧df2。保存并加载此df1将df2转换为字符串。然而,我需要这是一个数据帧 我遇到了几个解决方案,见下文,但似乎无法将这些应用于我的情况,因为我有一个包含数据帧的数据帧 df2由两列“Mean”、“SD”组成,每个df1行样本下有95k行,它们不都是0 我的直觉是,从一开始,我的方法本身并不理想 有人能给我一个正确的方向吗 '平均SD\r\n0.00 0.000000\r\n1 0.00 0.000000\r\

我有一个数据帧df1,由56行9列组成,一列['Matrix']包含每个单元格的数据帧df2。保存并加载此df1将df2转换为字符串。然而,我需要这是一个数据帧

我遇到了几个解决方案,见下文,但似乎无法将这些应用于我的情况,因为我有一个包含数据帧的数据帧

df2由两列“Mean”、“SD”组成,每个df1行样本下有95k行,它们不都是0

我的直觉是,从一开始,我的方法本身并不理想

有人能给我一个正确的方向吗

'平均SD\r\n0.00 0.000000\r\n1 0.00 0.000000\r\n2 0.00 0.000000\r\n3 0.00 0.000000\r\n4 0.00 0.000000\r\n5 0.00 0.000000\r\n6 0.00 0.000000\r\n7 0.00 0.000000\r\n8 0.00 0.000000\r\n9 ...... 0.000000\r\n95194 0.00 0.000000\r\n95195 0.00 0.000000\r\n95196 0.00 0.000000\r\n95197 0.00 0.000000\r\n95198 0.00 0.000000\r\n95199 0.00 0.000000\r\n\r\n[95200行x 2列]”

保存数据帧时应使用json文件格式

考虑以下简化示例:

import pandas as pd

df1 = pd.DataFrame([[0,1], [2,3]], columns=["first", "second"])
df2 = pd.DataFrame([[4,5,6], [7,8,9]])
df1["dataf"] = [df2, df2]

print("\nDataFrame df1:")
print("**************")  
print(df1)
print("\ndataf column:")
print("***************")  
print(df1["dataf"])
print("\ndataf column cell:")
print("********************")  
print(df1["dataf"][0])
print("Type of dataf cells:", type(df1["dataf"][0]))
输出:

使用以下内容加载我们的数据:

输出:

输出:


您只需要循环通过df1并将单元格转换为数据帧。我已经有一段时间没有尝试过了,但您可能可以将其作为StringIO对象加载并读取该对象:。然后,您可以将其存储在字典中,每个键都指向行号或类似的内容。您也可以将其保留为df1,但通常情况下,表格形式的povAmazing没有多大意义,谢谢!如前所述,我怀疑我的csv导出方法。这太完美了。
DataFrame df1:
**************
   first  second                             dataf
0      0       1     0  1  2
0  4  5  6
1  7  8  9
1      2       3     0  1  2
0  4  5  6
1  7  8  9

dataf column:
***************
0       0  1  2
0  4  5  6
1  7  8  9
1       0  1  2
0  4  5  6
1  7  8  9
Name: dataf, dtype: object

dataf column cell:
********************
   0  1  2
0  4  5  6
1  7  8  9
Type of dataf cells: <class 'pandas.core.frame.DataFrame'>
df1.to_json("test.json")
df1 = pd.read_json("test.json")

print("\nDataFrame df1:")
print("**************")  
print(df1)
print("\ndataf column:")
print("***************")  
print(df1["dataf"])
print("\ndataf column cell:")
print("********************")  
print(df1["dataf"][0])
print("Type of dataf cells:", type(df1["dataf"][0]))
DataFrame df1:
**************
   first  second                                              dataf
0      0       1  {'0': {'0': 4, '1': 7}, '1': {'0': 5, '1': 8},...
1      2       3  {'0': {'0': 4, '1': 7}, '1': {'0': 5, '1': 8},...

dataf column:
***************
0    {'0': {'0': 4, '1': 7}, '1': {'0': 5, '1': 8},...
1    {'0': {'0': 4, '1': 7}, '1': {'0': 5, '1': 8},...
Name: dataf, dtype: object

dataf column cell:
********************
{'0': {'0': 4, '1': 7}, '1': {'0': 5, '1': 8}, '2': {'0': 6, '1': 9}}
Type of dataf cells: <class 'dict'>
df1["dataf"] = df1["dataf"].apply(lambda x: pd.DataFrame(x))

print("\nDataFrame df1:")
print("**************")  
print(df1)
print("\ndataf column:")
print("***************")  
print(df1["dataf"])
print("\ndataf column cell:")
print("********************")  
print(df1["dataf"][0])
print("Type of dataf cells:", type(df1["dataf"][0]))
DataFrame df1:
**************
   first  second                             dataf
0      0       1     0  1  2
0  4  5  6
1  7  8  9
1      2       3     0  1  2
0  4  5  6
1  7  8  9

dataf column:
***************
0       0  1  2
0  4  5  6
1  7  8  9
1       0  1  2
0  4  5  6
1  7  8  9
Name: dataf, dtype: object

dataf column cell:
********************
   0  1  2
0  4  5  6
1  7  8  9
Type of dataf cells: <class 'pandas.core.frame.DataFrame'>
df1.to_json("test.json")
df1 = pd.read_json("test.json")
df1["dataf"] = df1["dataf"].apply(lambda x: pd.DataFrame(x))