转换列表中每个列表都在Pandas中的数字字符串

2024-10-05 14:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Pandas.DataFrame中有一列,其中每一行都是数字的列表。但这些数字是以字符串形式键入的

列名是allmz,dataframe是exp_df

print exp_df.iloc[:3]['allmz']
>2129    [445.120788574, 355.067465091, 355.069260997, ...
>2130    [445.120758057, 355.06748396, 355.069279865, 3...
>2131    [445.120880127, 355.067417985, 355.06921389, 3...
>Name: allmz, dtype: object

我试图用iteritems来转换每个数字,但是类型仍然是str。尽管我分配了mzz = float(mzz)。在

^{pr2}$

{cd7>每个人都试图这么做

exp_df[each] = exp_df[each].apply(lambda x: float(y) for y in x.split(" "))

但是我想lambda不适用于for循环。{andaccess}中的每个字符串{1>如何转换?在


Tags: lambda字符串dataframepandasdf列表for键入
3条回答

我有一条路,但不是很好。在^{cd2>之后改成了{cd2>

exp_df['allmz'].apply(lambda x: np.asarray(x.split(" ")).astype(float))

仍然期待一个更好的结构。我相信for循环应该有办法的。在

我认为您需要添加[]来理解列表,split(' ')应该简化为split(),因为默认分隔符是空白:

exp_df[each] = exp_df[each].apply(lambda x: [float(y) for y in x.split()])

但如果可能,最好是创建列:

^{pr2}$

在apply中使用列表理解,即

设置

m = pd.DataFrame(['1.2,2.3,3.4,4.5,6.5'],columns=['numbers'])
m['numbers'] = m['numbers'].str.split(',')
0    [1.2, 2.3, 3.4, 4.5, 6.5]
Name: numbers, dtype: object

^{pr2}$

相关问题 更多 >