gpt4 book ai didi

python - Pandas:在列之间交换行

转载 作者:行者123 更新时间:2023-12-02 02:54:17 27 4
gpt4 key购买 nike

有些行输入了错误的列,所以现在我需要交换它们。

df = pd.DataFrame({'c': {0: '22:58:00', 1: '23:03:00', 2: '0', 3: '10'} , 'a': {0: '0', 1: '10', 2: '22:58:00', 3: '23:03:00'}, 'd': {0: '23:27 :00', 1: '23:39:00', 2: '10', 3: '17'}, 'b': {0: '10', 1: '17', 2: '23:27 :00', 3: '23:39:00'}})

          a         b         c         d
0 0 10 22:58:00 23:27:00
1 10 17 23:03:00 23:39:00
2 22:58:00 23:27:00 0 10
3 23:03:00 23:39:00 10 17

我目前的做法

cpy = df[['a', 'b']]
df.loc[2:, 'a'] = df['c']
df.loc[2:, 'b'] = df['d']
df.loc[2:, 'c'] = cpy['a']
df.loc[2:, 'd'] = cpy['b']

预期输出

    a   b         c         d
0 0 10 22:58:00 23:27:00
1 10 17 23:03:00 23:39:00
2 0 10 22:58:00 23:27:00
3 10 17 23:03:00 23:39:00

它可以工作,但这只是可能的,因为它有 4 列。有更好的方法吗?

请注意,数据类型可能会导致排序问题df.loc[0]['c']datetime.time(22, 58)

也许有类似的东西

df.swap_row_col(index=[2:], columns_from=['a', 'b'], columns_to=['c', 'd'])

最佳答案

也许我们可以尝试在我的解决方案中注意一下,如果原始订单是 100, 0,我的输出仍然是 100, 0

df=pd.DataFrame(df.apply(lambda x : sorted(x,key= lambda s: ':' in s),1).tolist(),columns=df.columns)
Out[119]:
c a d b
0 0 10 22:58:00 23:27:00
1 10 17 23:03:00 23:39:00
2 100 10 22:58:00 23:27:00
3 10 17 23:03:00 23:39:00

关于python - Pandas:在列之间交换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505475/

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