Python 在数据帧中用numpy数组替换字符串

Python 在数据帧中用numpy数组替换字符串,python,pandas,numpy,Python,Pandas,Numpy,我有一个csv文件,如下所示: A, B 34, "1.0, 2.0" 24, "3.0, 4.0" 我正在使用熊猫读取文件: import pandas as pd df = pd.read_csv('file.csv') 我需要做的是用numpy数组替换字符串: for index, row in df.iterrows(): df['B'][index] = np.fromstring(df['B'][index], sep=',') 但是,如果试图在数据帧的切片副本

我有一个csv文件,如下所示:

A, B
34, "1.0, 2.0"
24, "3.0, 4.0"
我正在使用熊猫读取文件:

import pandas as pd
df = pd.read_csv('file.csv')
我需要做的是用numpy数组替换字符串:

for index, row in df.iterrows():
        df['B'][index] = np.fromstring(df['B'][index], sep=',')
但是,如果试图在数据帧的切片副本上设置值,则会引发错误
。但是,正在正确创建numpy阵列

我需要B中的所有值都是
numpy.ndarray
类型

编辑: 我尝试在代码中用行替换df

for index, row in df.iterrows():
    row['flux'] = np.fromstring(row['flux'][index][1:-1], sep=',')

并且不会引发错误,但变量的类型不会更改,数据帧仍然包含字符串

您可以使用“应用”更改为该格式:

df['B'] = df['B'].apply(lambda x: np.fromstring(x, sep=','))


您可以使用“应用”更改为该格式:

df['B'] = df['B'].apply(lambda x: np.fromstring(x, sep=','))


使用中的
converters
参数转换为numpy数组:

import pandas as pd
import numpy as np
from io import StringIO

temp='''A,B
34,"1.0, 2.0"
24,"3.0, 4.0"'''
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), converters={'B':lambda x: np.fromstring(x, sep=',')})

print (df)
    A           B
0  34  [1.0, 2.0]
1  24  [3.0, 4.0]

使用中的
converters
参数转换为numpy数组:

import pandas as pd
import numpy as np
from io import StringIO

temp='''A,B
34,"1.0, 2.0"
24,"3.0, 4.0"'''
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), converters={'B':lambda x: np.fromstring(x, sep=',')})

print (df)
    A           B
0  34  [1.0, 2.0]
1  24  [3.0, 4.0]

使用
df['B'][index]
时,首先创建一个视图(
df['B']
),然后在给定索引处更新。更新视图时,基础数据帧(通常)不会得到更新。如果只索引一次,您应该会遇到这个问题:
df.loc[index,'B']=…
。当您使用
df['B'][index]
首先创建一个视图(
df['B']
)并在给定索引处更新时,请阅读中的详细信息。更新视图时,基础数据帧(通常)不会得到更新。如果只索引一次,您应该会遇到这个问题:
df.loc[index,'B']=…
。阅读更多关于