Python: pandas.DataFrame.insert ValueError: Buffer has wrong number of dimensions
Python: pandas.DataFrame.insert ValueError: Buffer has wrong number of dimensions
在 DataFrame 中,我想从总是跟在特定单词之后的字符串中提取一个整数 (0-9),并将其作为新列添加到特定位置(不是末尾)。在下面的简化示例中,我想提取单词 'number'.
之后的整数
数据框:
testDf = ['Number1', 'number2', 'aNumber8', 'Number6b']
df = pd.DataFrame(testDf, columns=['Tagname'])
Tagname
Number1
number2
aNumber8
Number6b
下面的代码有效,但由于它在数据框的末尾添加了列,我必须移动该列。
df['Number'] = df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE)
Tagname Number
Number1 1
number2 2
aNumber8 8
Number6b 6
insertNum = df['Number']
df.drop(labels=['Number'], axis=1, inplace = True)
df.insert(0, 'Number', insertNum)
Number Tagname
1 Number1
2 number2
8 aNumber8
6 Number6b
我希望我能做的是使用 .insert(),但这会引发如下所示的 ValueError。
df.insert(0, 'Number', df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE))
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
是否可以这样使用.insert()?
对Series.str.extract
中的Series
使用expand=False
,如果省略它得到一个或多个列DataFrame
,因为默认参数是expand=True
:
详情:
print (df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE))
0
0 1
1 2
2 8
3 6
print (df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE, expand=False))
0 1
1 2
2 8
3 6
Name: Tagname, dtype: object
df.insert(0,'Number',df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE, expand=False))
print (df)
Number Tagname
0 1 Number1
1 2 number2
2 8 aNumber8
3 6 Number6b
在 DataFrame 中,我想从总是跟在特定单词之后的字符串中提取一个整数 (0-9),并将其作为新列添加到特定位置(不是末尾)。在下面的简化示例中,我想提取单词 'number'.
之后的整数数据框:
testDf = ['Number1', 'number2', 'aNumber8', 'Number6b']
df = pd.DataFrame(testDf, columns=['Tagname'])
Tagname
Number1
number2
aNumber8
Number6b
下面的代码有效,但由于它在数据框的末尾添加了列,我必须移动该列。
df['Number'] = df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE)
Tagname Number
Number1 1
number2 2
aNumber8 8
Number6b 6
insertNum = df['Number']
df.drop(labels=['Number'], axis=1, inplace = True)
df.insert(0, 'Number', insertNum)
Number Tagname
1 Number1
2 number2
8 aNumber8
6 Number6b
我希望我能做的是使用 .insert(),但这会引发如下所示的 ValueError。
df.insert(0, 'Number', df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE))
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
是否可以这样使用.insert()?
对Series.str.extract
中的Series
使用expand=False
,如果省略它得到一个或多个列DataFrame
,因为默认参数是expand=True
:
详情:
print (df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE))
0
0 1
1 2
2 8
3 6
print (df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE, expand=False))
0 1
1 2
2 8
3 6
Name: Tagname, dtype: object
df.insert(0,'Number',df['Tagname'].str.extract(r'number*(\d)', re.IGNORECASE, expand=False))
print (df)
Number Tagname
0 1 Number1
1 2 number2
2 8 aNumber8
3 6 Number6b