Python 通过在数据库中查找另一个数据帧来填充数据帧
我有一个熊猫数据帧(df),如下所示:Python 通过在数据库中查找另一个数据帧来填充数据帧,python,pandas,dataframe,ipython,nan,Python,Pandas,Dataframe,Ipython,Nan,我有一个熊猫数据帧(df),如下所示: AccountName AccountName2 DateTime abc guest 2016-06-10 20:46 guest 2016-06-10 21:32 def 2016-06-10 23:11 2016-06-10 23:31 ghi
AccountName AccountName2 DateTime
abc guest 2016-06-10 20:46
guest 2016-06-10 21:32
def 2016-06-10 23:11
2016-06-10 23:31
ghi 2016-06-10 24:41
我需要基于上述数据帧导出一个新的数据帧(df1)。df1应该有两个字段,ResultAccount和DateTime
if(df["AccountName"] != ' '):
df1["ResultAccount"] = df["AccountName"]
elif(df["AccountName2] != ' '):
df1["ResultAccount"] = df["AccountName2"]
else:
df1["ResultAccount"] = "none"
这是我遵循的方法,但是df1
并没有按预期填充。任何帮助都将不胜感激。我认为您可以先将带有空格的字符串'
添加到NaN
,然后应用自定义函数f
。输出是来自系列ResultAccount
和df.DateTime
的Dataframe
:
import pandas as pd
import numpy as np
df = pd.DataFrame({'AccountName2': {0: 'guest', 1: 'guest', 2: ' ', 3: ' ', 4: ' '},
'DateTime': {0: '2016-06-10 20:46', 1: '2016-06-10 21:32', 2: '2016-06-10 23:11', 3: '2016-06-10 23:31', 4: '2016-06-10 24:41'},
'AccountName': {0: 'abc', 1: ' ', 2: 'def', 3: ' ', 4: 'ghi'}})
print (df)
AccountName AccountName2 DateTime
0 abc guest 2016-06-10 20:46
1 guest 2016-06-10 21:32
2 def 2016-06-10 23:11
3 2016-06-10 23:31
4 ghi 2016-06-10 24:41
我想你可以先用空格'
将字符串改为NaN
,然后用应用自定义函数f
。输出是来自系列ResultAccount
和df.DateTime
的Dataframe
:
import pandas as pd
import numpy as np
df = pd.DataFrame({'AccountName2': {0: 'guest', 1: 'guest', 2: ' ', 3: ' ', 4: ' '},
'DateTime': {0: '2016-06-10 20:46', 1: '2016-06-10 21:32', 2: '2016-06-10 23:11', 3: '2016-06-10 23:31', 4: '2016-06-10 24:41'},
'AccountName': {0: 'abc', 1: ' ', 2: 'def', 3: ' ', 4: 'ghi'}})
print (df)
AccountName AccountName2 DateTime
0 abc guest 2016-06-10 20:46
1 guest 2016-06-10 21:32
2 def 2016-06-10 23:11
3 2016-06-10 23:31
4 ghi 2016-06-10 24:41
你可以用。它是np的多条件泛化。其中
:
import numpy as np
import pandas as pd
df = pd.DataFrame(
{'AccountName': ['abc', ' ', 'def', ' ', 'ghi'],
'AccountName2': ['guest', 'guest', ' ', ' ', ' '],
'DateTime': ['2016-06-10 20:46', '2016-06-10 21:32', '2016-06-10 23:11', '2016-06-10 23:31', '2016-06-10 24:41']})
conditions = [df['AccountName'] != ' ', df['AccountName2'] != ' ']
choices = [df["AccountName"], df["AccountName2"]]
df['ResultAccount'] = np.select(conditions, choices, default='none')
屈服
AccountName AccountName2 DateTime ResultAccount
0 abc guest 2016-06-10 20:46 abc
1 guest 2016-06-10 21:32 guest
2 def 2016-06-10 23:11 def
3 2016-06-10 23:31 none
4 ghi 2016-06-10 24:41 ghi
你可以用。它是np的多条件泛化。其中
:
import numpy as np
import pandas as pd
df = pd.DataFrame(
{'AccountName': ['abc', ' ', 'def', ' ', 'ghi'],
'AccountName2': ['guest', 'guest', ' ', ' ', ' '],
'DateTime': ['2016-06-10 20:46', '2016-06-10 21:32', '2016-06-10 23:11', '2016-06-10 23:31', '2016-06-10 24:41']})
conditions = [df['AccountName'] != ' ', df['AccountName2'] != ' ']
choices = [df["AccountName"], df["AccountName2"]]
df['ResultAccount'] = np.select(conditions, choices, default='none')
屈服
AccountName AccountName2 DateTime ResultAccount
0 abc guest 2016-06-10 20:46 abc
1 guest 2016-06-10 21:32 guest
2 def 2016-06-10 23:11 def
3 2016-06-10 23:31 none
4 ghi 2016-06-10 24:41 ghi
非常感谢。当存在AccountName时,将填充ResultAccount。它不适用于其他2种情况-即如果AccountName为null且AccountName2包含内容,则ResultAccount是AccountName2中的内容。另外,如果两者都为空,它不会填充“none”。好吧,也许我遗漏了什么。列ResultAccount
的期望输出是什么?它不必基于哪个列必须是第一列。对不起,如果我没有把我的问题说清楚的话。要填充“ResultAccount”,首先应检查(AccountName!=null),如果是,则ResultAccount=AccountName。Else ResultAccount=AccountName2.对不起,我有点困惑。什么是期望输出?列ResultAccount
中有哪些值?所需的输出是您在回答中给出的,但我在应用函数时没有得到。“abc”、“def”和“ghi”按预期填充,但“来宾”和“无”未填充。谢谢。当存在AccountName时,将填充ResultAccount。它不适用于其他2种情况-即如果AccountName为null且AccountName2包含内容,则ResultAccount是AccountName2中的内容。另外,如果两者都为空,它不会填充“none”。好吧,也许我遗漏了什么。列ResultAccount
的期望输出是什么?它不必基于哪个列必须是第一列。对不起,如果我没有把我的问题说清楚的话。要填充“ResultAccount”,首先应检查(AccountName!=null),如果是,则ResultAccount=AccountName。Else ResultAccount=AccountName2.对不起,我有点困惑。什么是期望输出?列ResultAccount
中有哪些值?所需的输出是您在回答中给出的,但我在应用函数时没有得到。“abc”、“def”和“ghi”按预期填充,但“guest”和“None”未填充。请回答此问题。请回答此问题