BMi*_*ell 32 python pandas mat
我当前的代码如下所示 - 我正在导入一个MAT文件,并尝试从其中的变量创建一个DataFrame:
mat = loadmat(file_path) # load mat-file
Variables = mat.keys() # identify variable names
df = pd.DataFrame # Initialise DataFrame
for name in Variables:
B = mat[name]
s = pd.Series (B[:,1])
Run Code Online (Sandbox Code Playgroud)
所以在循环中我可以创建一系列的每个变量(它们是带有两列的数组 - 所以我需要的值在第2列)
我的问题是如何将系列追加到数据帧?我查看了文档,但没有一个例子符合我的要求.
最好的祝福,
本
Jaa*_*aan 42
以下是如何创建一个DataFrame,其中每个系列都是一行.
对于单个Series(产生单行DataFrame):
series = pd.Series([1,2], index=['a','b'])
df = pd.DataFrame([series])
Run Code Online (Sandbox Code Playgroud)
对于具有相同索引的多个系列:
cols = ['a','b']
list_of_series = [pd.Series([1,2],index=cols), pd.Series([3,4],index=cols)]
df = pd.DataFrame(list_of_series, columns=cols)
Run Code Online (Sandbox Code Playgroud)
对于具有可能不同索引的多个系列:
list_of_series = [pd.Series([1,2],index=['a','b']), pd.Series([3,4],index=['a','c'])]
df = pd.concat(list_of_series, axis=1).transpose()
Run Code Online (Sandbox Code Playgroud)
要创建每个系列都是列的DataFrame ,请参阅其他人的答案.或者,可以创建一个DataFrame,其中每个系列都是一行,如上所述,然后使用df.transpose().但是,如果列具有不同的数据类型,则后一种方法效率低下.
Tom*_*ger 23
无需初始化一个空的DataFrame(你甚至没有这样做,你需要pd.DataFrame()使用parens).
相反,要创建一个DataFrame,其中每个系列都是一列,
series,和df = pd.concat(series, axis=1)就像是:
series = [pd.Series(mat[name][:, 1]) for name in Variables]
df = pd.concat(series, axis=1)
Run Code Online (Sandbox Code Playgroud)
Wto*_*wer 13
现在有一个pandas.Series.to_frame方法:
Series.to_frame(name=NoDefault.no_default)将系列转换为数据帧。
参数
nameobject,可选:传递的名称应替换系列名称(如果有)。退货
DataFrame:系列的数据帧表示。例子
Run Code Online (Sandbox Code Playgroud)s = pd.Series(["a", "b", "c"], name="vals") s.to_frame()