python - 如何在Excel中使用python将列拆分为父列下的两个子列

标签 python excel pandas numpy split

需要 python 的建议。 我有一个 Excel 工作表,其中有 20 列,其值类似于 12-->23 我需要将所有列分成两个 pre 和 post,其中 pre 的值为 12,post 的值为 23 等等...还有这些列使用 pandas 应该正好位于各自的父列下

输入:

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

输出

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

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

我尝试了以下代码,如果我知道列名称,它会起作用,但如果我必须循环没有名称的列,则它不会起作用

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 - 如何在Excel中使用python将列拆分为父列下的两个子列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75950933/

相关文章:

带条件的 Python 列表到 Dataframe

python - tkinter 按钮的高度和宽度

python - Python 的 imaplib 是否允许您设置超时?

excel - 从 Excel 中的列范围动态提取唯一值列表?

windows - 批处理文件中使用 vbscript 命令的批处理脚本问题

python - 删除 pandas DataFrame 列中字符串条目的结尾

python - 从 PyQt 小部件项设置和获取 "data"?

python - 在Python xlrd中读取Excel文件

java - Apache POI DataFormatter 返回科学记数法

python - Pandas 获取具有独特列组合的 DataFrame