pandas 如何正确转换数据框?

acruukt9  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(76)

I want transform input dataframe to output.在输出中,每行由输入的ST、ED列分隔。
输入
| 艾德|类型| TYPE |
| --|--| ------------ |
| 201503|一个| A |
| 201504| B| B |
| 201505| C类| C |
输出量
| 艾德|类型| TYPE |
| --|--| ------------ |
| 201501|一个| A |
| 201503| A、B、C| A,B,C |
| 201504| B、丙| B,C |
| 201505| C类| C |
我想,在转换后的数据下面,每列的项目数是1/3/2/1。这与输出中TYPE的项数相似。

201501 201502 201503 A

201502 201503 201504 B

201502 201503 201504 201505 C

字符串

nlejzf6q

nlejzf6q1#

您可以尝试(假设df已排序):

from itertools import groupby

vals = {}

for a, b, t in zip(df.ST, df.ED, df.TYPE):
    for i in range(a, b+1):
        vals.setdefault(i, set()).add(t)

out = []
for k, g in groupby(sorted(vals.items()), lambda k: k[1]):
    g = list(g)
    out.append({
        'ST': g[0][0],
        'ED': g[-1][0],
        'TYPE': ','.join(sorted(k))
    })

df_out = pd.DataFrame(out)
print(df_out)

字符串
图纸:

ST      ED   TYPE
0  201501  201501      A
1  201502  201503  A,B,C
2  201504  201504    B,C
3  201505  201505      C

相关问题