【发布时间】:2020-11-03 05:01:03
【问题描述】:
我有一张这样的桌子:
|-----|-----|-----|
| A | B | C |
|-----|-----|-----|
| | 5 | |
|-----|-----|-----|
| 1 | | |
|-----|-----|-----|
| | 5 | |
|-----|-----|-----|
| | | 2 |
|-----|-----|-----|
| | | 2 |
|-----|-----|-----|
其中所需范围内的每一列在其行中只有一个整数。我想将这些列合并成一个新列,如下所示:
|-----|-----|-----| |-----|
| A | B | C | | Z |
|-----|-----|-----| |-----|
| | 5 | | → | 5 |
|-----|-----|-----| |-----|
| 1 | | | → | 1 |
|-----|-----|-----| |-----|
| | 5 | | → | 5 |
|-----|-----|-----| |-----|
| | | 2 | → | 2 |
|-----|-----|-----| |-----|
| | | 2 | → | 2 |
|-----|-----|-----| |-----|
我一直在寻找,但我能找到的最接近的解决方案是:
df.iloc[:,some_column:another_column].apply( lambda x: "".join(x.astype(str)), axis=1)
但是,这也会从空白单元格中连接“NaN”,这显然是不可取的。
我怎样才能得到我想要的输出?
【问题讨论】:
-
df.max(axis=1) -
@cs95 太棒了!您能否将其添加为答案,以便我接受?
-
不用担心,您的问题已经被问过,您可以对任何解决方案 here 投赞成票,尽管它们不如
max(axis=1)或sum有用,因为您使用的是数字数据为您提供一些捷径。 -
@cs95 我认为
max比sum更安全(如果有两列包含一个值,出于某种奇怪的原因)这就是为什么我更愿意接受你的建议作为回答。此处提供的链接stackoverflow.com/questions/34989341/… 没有max或sum作为答案,并且合并了字符串,这就是为什么我相信我的问题足够独特以证明其自己的帖子的合理性。想法? -
公平地说,我重新提出了这个问题,因为数据类型有所不同。我已将我的解决方案编辑为下面的答案,您可以接受。如果您仍然想支持我并想了解更多关于 pandas 的信息,我已经写了关于各种主题的文章here。
标签: python pandas dataframe numeric