gpt4 book ai didi

python - 具有同一行字符的单元格合并为一个单元格

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:06 25 4
gpt4 key购买 nike

我有一个数据框,错误已经蔓延,其中由两个不同单词组成的数据被分成两个单独的单元格。示例:错误蔓延的帧。示例:

    col1    col2    col3    col4   col5
0 A 1 2 3
1 B C 3 4 5
2 D 6 7 8
3 B E 9 10 11

我想将同一行单元格中的字母连接到一个单元格中,同时将行的所有其余部分移动到左侧。要获取以下形式的结果:

    col1    col2    col3    col4   col5
0 A 1 2 3
1 B C 3 4 5
2 D 6 7 8
3 B E 9 10 11

我现在使用 df.replace(['C', 'E'], [np.nan, np.nan], regex=True),后来使用 df .iloc[[n]].dropna(axis=1, how="any") 按列。但这并不理想,因为在上面的例子中我得到:

    col1    col2    col3    col4   col5
0 A 1 2 3
1 B 3 4 5
2 D 6 7 8
3 B 9 10 11

所以有两行同名,这实际上是不正确的。因为它们应该分别被称为“B C”和“B E”。此外,每次我都必须根据数据手动输入单元格名称以切换为 NaN。你有什么想法吗?

最佳答案

我提供的解决方案太过分了......但仍然有效

df1=df.stack().to_frame()

m=df1[0].groupby(level=0).apply(lambda x :x.str.isalpha().diff().ne(0).cumsum())
df1.groupby([df1.index.get_level_values(0),m]).sum().unstack().add_prefix('col1_')
Out[116]:
col1_0
0 col1_1 col1_2 col1_3 col1_4
0 A 1 2 3
1 BC 3 4 5
2 D 6 7 8
3 BE 9 10 11

这里改一下

m=df1[0].groupby(level=0).apply(lambda x :x.str.isalpha().ne(1).cumsum())
df1.groupby([df1.index.get_level_values(0),m]).sum().unstack().add_prefix('col1_')
Out[164]:
col1_0
0 col1_0 col1_1 col1_2 col1_3
0 A 1,5 2,5 3,5
1 BC 3,5 4,5 5,5
2 D 6,5 7,5 8,5
3 BE 9,5 10,5 11,5

关于python - 具有同一行字符的单元格合并为一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47208647/

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