Python 如何覆盖系列中的值?

Python 如何覆盖系列中的值?,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我正在从excel工作表中将一些数据读入数据框。它看起来像这样: ColumnA 0: abc-123 1: xyz-456 df['ColumnB'] = df['ColumnA'].str.split('-').str[0] 我想得到这样的结果,在破折号之前,它从A中提取所有内容,并创建一个新的列B: ColumnA ColumnB 0: abc-123 abc 1: xyz-456 xyz 我有这个,但不知道如何覆盖每一行: df = pd.read_excel(so

我正在从excel工作表中将一些数据读入数据框。它看起来像这样:

   ColumnA
0: abc-123
1: xyz-456
df['ColumnB'] = df['ColumnA'].str.split('-').str[0]
我想得到这样的结果,在破折号之前,它从A中提取所有内容,并创建一个新的列B:

   ColumnA ColumnB
0: abc-123  abc
1: xyz-456  xyz
我有这个,但不知道如何覆盖每一行:

df = pd.read_excel(some_file_path, some_sheet_name, parse_cols='A')
new_list = df('ColumnA')
for str in new_list:
    str = str.split('-',1)[0]

df.insert(1,'ColumnB', new_list)

但是没有任何内容被覆盖,它只是精确地复制值

您可以执行如下列赋值:

   ColumnA
0: abc-123
1: xyz-456
df['ColumnB'] = df['ColumnA'].str.split('-').str[0]
这应该可以做到:
df['ColumnB']=[x.split('-')[0]表示df['ColumnA']]中的x

EDIT:根据Quang Hoang的回答进行轻微编辑以修复错误

我不确定您的数据帧到底是什么样子,但您可以在列A上使用str.split方法:

df['ColumnB'] = df['ColumnA'].str.split('-').str[0]
这将返回:

    ColumnA ColumnB
0:  abc-123     abc
1:  xyz-456     xyz

实际上,我在df中有不止一列。我如何使用上面的代码将其准确插入第二列?我不知道你的意思;你是说你想拆分另一列,还是说你想拆分ColumnA的另一部分为一个新列?@thepandsfriend你可以使用
insert
将列放到你想要的位置:
df.insert(df.columns.get_loc('ColumnA')+1,'column B',df['ColumnA'].str.split('-').str[0])
所以我的df是由ColA、column和column组成的,按顺序是冷的。我想把B插入槽中,这样它就变成了A,B,C,D。我相信只要调用上面列出的代码,它就会附加到尾端。对不起,我应该早点抓到它。但是你的代码返回的是abc,ColB中的123。我在试着找abc,xyz