gpt4 book ai didi

python - Pandas:连接数据框中的两列(不创建两列)

转载 作者:行者123 更新时间:2023-12-01 04:44:17 28 4
gpt4 key购买 nike

我有以下数据:

    Col1 Col2 Col3 Col4
A G K
B L Q
C H M
D N R
E I O
F J P

这就是我想要的:

    Col1 NEW  Col3 
A G K
B Q L
C H M
D R N
E I O
F J P

我尝试过使用following solution它按照我需要的方式工作了。最终发生的情况是,我将拥有数据帧 A,然后是数据帧 B。B 将包含我的新列,而 A 将保持不变。

我尝试使用 .replace() 和 .fillna() 但我似乎无法正确理解语法。出于某种原因,当我尝试做类似的事情时:

      csv[Col2] = csv.replace(to_replace=" ", value=csv[Col4]])

我最终让 Col4 的全部内容覆盖 Col2(包括空格)。这似乎发生在 .replace() 和 .fillna() 中。

我不确定它是否有帮助,但在这些情况下,Col2 只会丢失 Col4 有数据的数据。有什么想法吗?

解决方案

感谢所有回复的人。我现在意识到我一直在追自己的尾部,因为语法错误。这是我尝试过但无法工作的另一行代码。我遇到了“一列覆盖另一列”问题(见上文)。

    csv[Col2] = csv.fillna(csv[Col4]])

但是在重新访问下面约翰·高尔特链接的页面后,我觉得我错过了一些东西......然后它像火车一样击中了我。

    csv[Col2] = csv[Col2].fillna(csv[Col4]])

这非常有效。我觉得我更仔细地关注可能会更快地解决这个问题。谢谢大家的患者!

更新一个

我正在附加有关我的数据框的更多信息,以防它将来对任何人有帮助。

    <class 'pandas.core.frame.DataFrame'>
Int64Index: 50000 entries, 0 to 49999
Data columns (total 6 columns):
Col 1 50000 non-null object
Col 2 4652 non-null object
Col 3 50000 non-null object
Col 4 45347 non-null object
Col 5 50000 non-null object
Col 6 50000 non-null object
dtypes: object(6)
memory usage: 1.5+ MB
None

最佳答案

为了避免创建任何新的临时变量或数据帧,您只需将“Col2”替换为新值,然后删除“Col4”即可。有几种方法可以做到这一点。

Numpy where() 是一个很好的通用解决方案,可以处理 ''(空或空白)、' '(空格) ,或nan:

df['Col2'] = np.where( df.Col2 == ' ',   df.Col4, df.Col2 )  # space

df['Col2'] = np.where( df.Col2.isnull(), df.Col4, df.Col2 ) # blank or nan

@EdChum 的答案也应该有效,并且 fillna() 可能是最简单的(如 @JohnGalt 的链接),但如果那里有空格字符,则不起作用。

df['Col2'] = df['Col2'].fillna(df.Col4)

然后,只需删除“Col4”

df = df.drop('Col4',axis=1)

关于python - Pandas:连接数据框中的两列(不创建两列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834213/

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