熊猫组合包含字符串的重复列

我在合并重复的列时遇到问题(有点)。它似乎可以在较旧版本的Pandas / Python上运行(不确定问题出在哪里),但在最新版本上却无法运行。


我基本上在concat之后有一个混合值的数据框,其中包含重复的列名。这些值将是一个int,字符串或nan。对于每个重复的列名称,所有非nan值都将相同,因此从理论上讲max()应该可以解决问题。


说我有数据框:


    col1  col1  col2  col2  col3

0   Foo   nan   nan   Bar   Baz

1   nan   nan   Bar   Bar   nan

2   0     nan   1     nan   1

我的目标是


    col1  col2  col3

0   Foo   Bar   Baz

1   nan   Bar   nan

2   0     1     1

这样做


df.groupby(df.columns,axis=1).max()

确实可以执行我希望在较旧版本的Pandas / Python上执行的操作,但不适用于最新版本。这是我得到的最新版本:


    col1  col2  col3

0   nan   nan   Baz

1   nan   nan   nan

2   0     1     1

有任何想法吗?


缥缈止盈
浏览 127回答 3
3回答

catspeake

我认为您transpose首先需要数据框,reset the index然后rename是重复的index列值,最后使用groupby。df_t = df.T.reset_index()df_t["index"] = df_t["index"].str.split(".").str[0]result = df_t.groupby("index").first().T输出Out[57]: index col1 col2 col30      Foo  Bar  Baz1      NaN  Bar  NaN2        0    1    1

呼如林

您的算法是一个很好的算法,您可以尝试:df.groupby(df.columns,axis=1).max(axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python