我有一个pandas DataFrame,其中的一列是由float的元组组成的。当我使用public class MyClass {
private static Context mContext;
public static getInstance(Context context) {
mContext = context;
return new MyClass();
}
private MyClass() {}
public void getDreamValue() {
Settings.Secure.getInt(mContext.getContentResolver(), "dream_val", -1);
}
}
时,最终得到一维元组数组,但我需要一个二维浮点数组。
到目前为止,我的解决方案是使用arr = df['col_name'].to_numpy()
。这可行,但是先转换为列表然后转换为数组似乎效率低下。所以我想知道,还有更好的方法吗?
This question是相关的,但是唯一的答案指向以不同的方式读取文本文件,这对我来说不是一个选择,因为数据已经在DataFrame中。
答案 0 :(得分:0)
如果您的 col_name 包含实际元组,请运行:
pd.DataFrame(df['col_name'].apply(pd.Series))
但是,如果您已阅读DataFrame,例如从一个CSV文件中,然后每个 col_name 的元素实际上包含由以下组成的字符串:
,它仅看起来像元组。
如果是这种情况,请运行:
pd.DataFrame(df['col_name'].apply(lambda txt: pd.Series(eval(txt))))
在两种情况下,结果都是一个DataFrame。如果需要,将其转换为 Numpy 数组。
检查 col_name 是否包含字符串或 实际的元组,使用 Jupyter ,运行:
df.col_name.iloc[0]
如果结果为'(2.15, 3.03, 4.07)'
(用引号引起来),则为
字符串。但是,如果您收到(2.15, 3.03, 4.07)
(不带引号),则为
元组。
另一种检查方法是运行type(df.col_name.iloc[0])
。
您应该得到 tuple 或 str 。