需要在Python 中的建议. 我有一个包含20列的EXCEL表,这些列的值类似于12-->23我需要将所有列拆分为两个Pre和POST,其中Pre的值为12,POST的值为23,依此类推……此外,这些列应该恰好位于它们各自的父列下面,使用Pandas

输入:

| Column A | 
| -------- | 
| 12 --> 23|
| 13 --> 24|

输出

| column A |
|pre| |post|
| 12| | 23 |
| 13| | 24 |

有很多列,所以我不能直接使用列名

我try 了下面的代码,如果我知道列名,但如果我必须循环列而不使用它们的名称,它就会起作用

df = pd.read_excel('path/to/excel_file.xlsx')

for col in df.columns:
    new_cols = df[col].str.split(expand=True)
    
    df[col + '_1'] = new_cols[0]
    df[col + '_2'] = new_cols[1]
df.drop(columns=df.columns[:-2], inplace=True)

这对我不起作用

推荐答案

您可以使用str.split:

df[['pre', 'post']] = df['Column A'].str.split(r'\s*-->\s*', expand=True)
print(df)

# Output
    Column A pre post
0  12 --> 23  12   23
1  13 --> 24  13   24

因此,对于多个列:

data = []

for col in df.columns:
    new_cols = df[col].str.split(r'\s*-->\s*', expand=True)
    if new_cols.shape[1] == 2:
        df = df.drop(columns=col)
        data.append(new_cols.add_prefix(col + '_'))
df = pd.concat([df, *data], axis=1)

输出:

>>> df
  Column A_0 Column A_1
0         12         23
1         13         24

Python相关问答推荐

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

Python多处理:当我在一个巨大的pandas数据框架上启动许多进程时,程序就会陷入困境

Select 用a和i标签包裹的复选框?

如何使用pandasDataFrames和scipy高度优化相关性计算

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

运行总计基于多列pandas的分组和总和

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

两个pandas的平均值按元素的结果串接元素.为什么?

导入...从...混乱

实现神经网络代码时的TypeError

找到相对于列表索引的当前最大值列表""

python sklearn ValueError:使用序列设置数组元素

判断Python操作:如何从字面上得到所有decorator ?

Django Table—如果项目是唯一的,则单行

使用嵌套对象字段的Qdrant过滤

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

在Django中重命名我的表后,旧表中的项目不会被移动或删除

如何设置nan值为numpy数组多条件

如何在Python中从html页面中提取html链接?

Pandas 删除只有一种类型的值的行,重复或不重复