python - 如何将方法应用于 Pandas 数据框
问题描述
我有这个数据框
Col1 Col2
0 A (1000 EUR) C ( 3000 USD)
1 B (2000 CHF) D ( 4000 GBP)
我想将其转换为
Col1 Col2
0 1000 3000
1 2000 4000
我知道如何为 1 列创建数据框(带索引),但不是为多列
此代码产生此结果
Col1
0 1000
1 2000
a = z['Col1'].str.split('(').str[-1].str.split().str[0].apply(pd.to_numeric,errors='coerce')
我如何修改上面的代码以添加 col2 (理想情况下使用矢量化而不是迭代)(所以理想情况下,我不想为每一列输入相同的代码)
解决方案
您可以str.extract
在每一列上使用pd.concat
并从结果中构建一个新的数据框:
x = np.concatenate([df[col].str.extract(r'(?<=\()\s*(\d+)') for col in df], axis=1)
pd.DataFrame(x, columns=df.columns)
Col1 Col2
0 1000 3000
1 2000 4000