gpt4 book ai didi

python - 从右到左对齐数据

转载 作者:行者123 更新时间:2023-12-02 02:43:31 25 4
gpt4 key购买 nike

我有一个行数据集,其中包含一系列不同长度的整数值。我想分隔该系列,以便每个整数都有自己的列,但将这些值沿最右边的列对齐。我希望数据框重新排列矩阵的上三角。

目前我有一个数据集,例如:

    variable    value
0 0 [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
1 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
2 2 [1, 2, 3, 4, 5, 6, 7, 8]
3 3 [1, 2, 3, 4, 5, 6, 7]
4 4 [1, 2, 3, 4, 5, 6]
5 5 [1, 2, 3, 4, 5]
6 6 [1, 2, 3, 4]
7 7 [1, 2, 3]
8 8 [1, 2]
9 9 [1]

我应用这个功能

df = pd.DataFrame([pd.Series(x) for x in df2.value])
df.columns = ['{}'.format(x+1) for x in df.columns]

我明白了:

    1   2   3   4   5   6   7   8   9   10
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 0.0
1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 NaN
2 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 NaN NaN
3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 NaN NaN NaN
4 1.0 2.0 3.0 4.0 5.0 6.0 NaN NaN NaN NaN
5 1.0 2.0 3.0 4.0 5.0 NaN NaN NaN NaN NaN
6 1.0 2.0 3.0 4.0 NaN NaN NaN NaN NaN NaN
7 1.0 2.0 3.0 NaN NaN NaN NaN NaN NaN NaN
8 1.0 2.0 NaN NaN NaN NaN NaN NaN NaN NaN
9 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN

但我想要的是这样的:

    1   2   3   4   5   6   7   8   9   10
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 0.0
1 NaN 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
2 NaN NaN 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0
3 NaN NaN NaN 1.0 2.0 3.0 4.0 5.0 6.0 7.0
4 NaN NaN NaN NaN 1.0 2.0 3.0 4.0 5.0 6.0
5 NaN NaN NaN NaN NaN 1.0 2.0 3.0 4.0 5.0
6 NaN NaN NaN NaN NaN NaN 1.0 2.0 3.0 4.0
7 NaN NaN NaN NaN NaN NaN NaN 1.0 2.0 3.0
8 NaN NaN NaN NaN NaN NaN NaN NaN 1.0 2.0
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0

最佳答案

一种可能的方法是使用Series.str.len计算 value 列中列表的 max 长度,即 lmax,然后使用列表理解 pad 每个基于lmax的列表:

lmax = df['value'].str.len().max()
df1 = pd.DataFrame([[np.nan] * (lmax - len(s)) + s
for s in df['value']], columns=range(1, lmax + 1))

结果:

print(df1)
1 2 3 4 5 6 7 8 9 10
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 0
1 NaN 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9
2 NaN NaN 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8
3 NaN NaN NaN 1.0 2.0 3.0 4.0 5.0 6.0 7
4 NaN NaN NaN NaN 1.0 2.0 3.0 4.0 5.0 6
5 NaN NaN NaN NaN NaN 1.0 2.0 3.0 4.0 5
6 NaN NaN NaN NaN NaN NaN 1.0 2.0 3.0 4
7 NaN NaN NaN NaN NaN NaN NaN 1.0 2.0 3
8 NaN NaN NaN NaN NaN NaN NaN NaN 1.0 2
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN 1

关于python - 从右到左对齐数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63173736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com