Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 处理数据帧以实现多个目标_Python_Pandas_Dataframe - Fatal编程技术网

Python 处理数据帧以实现多个目标

Python 处理数据帧以实现多个目标,python,pandas,dataframe,Python,Pandas,Dataframe,df看起来像这样 s={0:[np.nan,'a','b','c','d'], 1:[A',8F',6',8',4F'], 2:[B',1',6',8F',3F'], 3:[C','1','8','8','1'], 4:[D',1',2F',6',8']} df=pd.DataFramedata=s 0 1 2 3 4 0 NaN A B C D 1A8F11 2 b 6 8 2F 3 c 8 F 8 6 4d4f3f18 首先,我想用F选择数据,并在新的数据帧上列

df看起来像这样

s={0:[np.nan,'a','b','c','d'], 1:[A',8F',6',8',4F'], 2:[B',1',6',8F',3F'], 3:[C','1','8','8','1'], 4:[D',1',2F',6',8']} df=pd.DataFramedata=s 0 1 2 3 4 0 NaN A B C D 1A8F11 2 b 6 8 2F 3 c 8 F 8 6 4d4f3f18 首先,我想用F选择数据,并在新的数据帧上列出

价值 0 8F 14F 2 8F 3 3F 4 2F 第二,我想添加大写字母

价值上限 0 8F A 1 4F A 2 8F B 3F B 4 2F D 还有小写字母

值上下 0 8F A 1 4F A d 2 8F B c 3F B d 4 2F D b 最后,我想根据下表对每一行进行评论

上下数 0 A 9 1 A b 1 2 A c 2 3 A d 3 4 B a 0 5 B 4 6 B c 8 7 B d 3 8 C a 4 9 C b 8 10立方厘米4 11 C d 6 12 D a 4 13 D b 1 14 D c 4 第15天第3天 我将通过比较Value和Num来注释每一行

值上下注释 0 8F A更小 1 4F A d更大 2 8F B c相等 3 4F B d等于 4 2F D b更小 注意,我不想在代码中使用任何for循环。 希望有人能帮我解决这个烦人的问题

这里有一种使用合并并与df1比较的方法

df=df.astype(str)
s=df[df.applymap(lambda x : '(F)' in x)].stack().rename_axis(['Lower','Upper']).reset_index()

s['Comment']=np.sign((s[0].str.split('(').str[0].astype(int)-s.merge(df1).Num)).map({-1:'lt',0:'eq',1:'gt'})
s
Out[753]: 
  Lower Upper     0 Comment
0     a     A  8(F)      lt
1     b     D  2(F)      gt
2     c     B  8(F)      eq
3     d     A  4(F)      gt
4     d     B  3(F)      eq
这里有一种使用合并并与df1比较的方法

df=df.astype(str)
s=df[df.applymap(lambda x : '(F)' in x)].stack().rename_axis(['Lower','Upper']).reset_index()

s['Comment']=np.sign((s[0].str.split('(').str[0].astype(int)-s.merge(df1).Num)).map({-1:'lt',0:'eq',1:'gt'})
s
Out[753]: 
  Lower Upper     0 Comment
0     a     A  8(F)      lt
1     b     D  2(F)      gt
2     c     B  8(F)      eq
3     d     A  4(F)      gt
4     d     B  3(F)      eq
使用以下代码: 其中df和df1是给定的数据帧:

df2=pd.mergedf,df1,how='internal',left_on=['Upper',Lower'],right_on=['Upper',Lower']

df2['Comment']=df2.applylambda x:np.wherex['Num']>intx['Value'][0],'biger','minger',1

编辑1:

使用下面的命令获取上面使用的df:

l = []
df = df.replace("[0-9A-Za-z]$", np.nan, regex=True)
for col in range(len(df)):
     l = l + df2.iloc[:,col].dropna().values.tolist()

df = pd.Series(df)
使用以下代码: 其中df和df1是给定的数据帧:

df2=pd.mergedf,df1,how='internal',left_on=['Upper',Lower'],right_on=['Upper',Lower']

df2['Comment']=df2.applylambda x:np.wherex['Num']>intx['Value'][0],'biger','minger',1

编辑1:

使用下面的命令获取上面使用的df:

l = []
df = df.replace("[0-9A-Za-z]$", np.nan, regex=True)
for col in range(len(df)):
     l = l + df2.iloc[:,col].dropna().values.tolist()

df = pd.Series(df)
numpy.core.defchararray等 numpy.core.defchararray等
到目前为止你试过什么?最好显示您的代码,并显示您遇到的错误或意外结果,然后我们可以帮助您到目前为止尝试了什么?最好能显示你的代码,并显示你有什么错误或意外的结果,然后我们可以帮助我,我认为这代码不起作用,df没有字段上限或下限不?好吧,构建这些是手头的挑战,你可以现在试试吗?我认为这代码不起作用,df没有字段上限或下限不?好吧,构建这些是目前面临的挑战。请您现在试一试。当您使用np.where时,有没有办法通过pandas分别获取True的索引和列?当您使用np.where时,有没有办法通过pandas分别获取True的索引和列?