需要 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/