我想根据数据框的值合并两列。每行的值将处于以下三种状态之一:
A)它们都是相同的值,
B)只有一个单元格具有值
C)它们是不同的值
例如:
我想根据它们的相似性将其归为一列。如果它们相等,则应为该值。如果一个为空白,则应为非NaN值。如果它们彼此不相等,那么我想举一个标志(比如“在第N行,单元格1与单元格2不匹配”,这并不重要)。
“!”只是一个占位符。我该怎么做。
这是一个类似问题的示例,但是考虑到两个单元格的值是什么,我还需要函数的添加步骤。 Combine two columns of text in dataframe in pandas/python
使用Excel屏幕截图的道歉,不确定在此处如何正确创建表格。
答案 0 :(得分:1)
您可以在熊猫中使用combine方法
import pandas as pd
import numpy as np
df = pd.DataFrame({"departure":[327,427,429,np.nan], "arrival":[np.nan,427,431,457]})
selection_rule = lambda s1, s2: s1 if s1 == s2 else (s1 if np.isnan(s2) else (s2 if np.isnan(s1) else "!"))
df['time'] = df['departure'].combine(df['arrival'], selection_rule )
>>> df
departure arrival time
0 327.0 NaN 327
1 427.0 427.0 427
2 429.0 431.0 !
3 NaN 457.0 457
答案 1 :(得分:0)
除非您的数据帧非常大,并且将函数应用于该函数将花费很长时间,否则我会说最好的方法就是为此编写一个函数。
Head to View in the application menu, and click on "Show Postman Console" or use the keyboard shortcut (CMD/CTRL + ALT + C) to open.