重新格式化数组中存储的数字

问题描述 投票:0回答:1

输入为:

input of sample data

需要输出为:

enter image description here

这仅适用于 XL 格式吗?或者需要 python 脚本。 如果可以的话,你能帮忙写一下 python 脚本吗? 谢谢。

我的脚本: 我的逻辑是读取每个 df.col 并比较从 1 到 20 的值,如果相等则将其写出或写为空白。

import pandas as pd
df = pd.read_excel(r"C:\Users\my\scripts\test-file.xlsx")

print(df)

for column in df.columns[0:]:
    print(df[column])
python input numeric reformat
1个回答
0
投票

这是一种方法:

样本df

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame({f'col_{i}': np.random.choice(range(1, 10), size=4, replace=False) 
                   for i in range(1, 4)})

df

   col_1  col_2  col_3
0      6      3      6
1      3      7      8
2      4      8      5
3      5      6      7

代码

max_value = df.values.max()

out = df.stack()

idx = pd.MultiIndex.from_arrays([out.index.get_level_values(1), 
                                 out.values])

out = (out
       .set_axis(idx)
       .unstack(0)
       .reindex(range(1, max_value + 1))
       )

out

   col_1  col_2  col_3
1    NaN    NaN    NaN
2    NaN    NaN    NaN
3    3.0    3.0    NaN
4    4.0    NaN    NaN
5    5.0    NaN    5.0
6    6.0    6.0    6.0
7    NaN    7.0    7.0
8    NaN    8.0    8.0

# write away to excel with `df.to_excel`

解释

© www.soinside.com 2019 - 2024. All rights reserved.