Python 如何覆盖系列中的值?
我正在从excel工作表中将一些数据读入数据框。它看起来像这样: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
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']]中的xEDIT:根据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