比较dataframe中特定列行的长度,python

比较dataframe中特定列行的长度,python,python,dataframe,Python,Dataframe,输入: 我想比较一下,若特定名称(例如:adam和adam)的消息长度相同,则打印此行 代码: 但我收到: TypeError:类型为“float”的对象没有len,为什么?可能有更好的方法,但这可能适合您: 进口大熊猫 dt=pandas.DataFrame[[Adam,你好,我是Adam],[Viola,你好]],columns=[name,message] data=pandas.DataFrame[[Adam,你好,我是Adam],[Viola,你好]],columns=[name,me

输入:

我想比较一下,若特定名称(例如:adam和adam)的消息长度相同,则打印此行

代码:

但我收到:
TypeError:类型为“float”的对象没有len,为什么?

可能有更好的方法,但这可能适合您:

进口大熊猫 dt=pandas.DataFrame[[Adam,你好,我是Adam],[Viola,你好]],columns=[name,message] data=pandas.DataFrame[[Adam,你好,我是Adam],[Viola,你好]],columns=[name,message] 普林特 打印数据 data.columns=[名称、消息\u数据] merged=dt.mergedata,on=[name] 合并的[merged.message.str.len!=合并的.message\u data.str.len] 首先,您需要重命名[message]列,以便它在合并中不会发生冲突。然后合并两个数据帧,只保留两个数据帧中存在的名称。最后,将[message]中的字符串长度与[message_data]中的字符串长度进行比较,并使用该长度提取合并表中不同的行

如果您特别想要该消息,可以执行以下操作:

merged.loc[merged.message.str.len!=merged.message\u data.str.len,message]
逐行打印结果应该很简单。

可能有更好的方法,但这可能适合您:

进口大熊猫 dt=pandas.DataFrame[[Adam,你好,我是Adam],[Viola,你好]],columns=[name,message] data=pandas.DataFrame[[Adam,你好,我是Adam],[Viola,你好]],columns=[name,message] 普林特 打印数据 data.columns=[名称、消息\u数据] merged=dt.mergedata,on=[name] 合并的[merged.message.str.len!=合并的.message\u data.str.len] 首先,您需要重命名[message]列,以便它在合并中不会发生冲突。然后合并两个数据帧,只保留两个数据帧中存在的名称。最后,将[message]中的字符串长度与[message_data]中的字符串长度进行比较,并使用该长度提取合并表中不同的行

如果您特别想要该消息,可以执行以下操作:

merged.loc[merged.message.str.len!=merged.message\u data.str.len,message]
逐行打印结果应该很简单。

更好的方法是根据名称合并两个数据帧

import pandas as pd
#construct df1
#construct df2

#merge two df based on name
df=pd.merge(df1,df2,on="name")

#get the length of messages and filter out unequal length

df_same_length=df[~df["message_x"].astype(str).str.len()==df["message_y"].astype(str).str.len()]

print(df_same_length["name"])

更好的方法是根据名称合并两个数据帧

import pandas as pd
#construct df1
#construct df2

#merge two df based on name
df=pd.merge(df1,df2,on="name")

#get the length of messages and filter out unequal length

df_same_length=df[~df["message_x"].astype(str).str.len()==df["message_y"].astype(str).str.len()]

print(df_same_length["name"])

@谢谢,我错过了那部分。编辑。@sg.sysel谢谢,我错过了那部分。编辑。
import pandas as pd
#construct df1
#construct df2

#merge two df based on name
df=pd.merge(df1,df2,on="name")

#get the length of messages and filter out unequal length

df_same_length=df[~df["message_x"].astype(str).str.len()==df["message_y"].astype(str).str.len()]

print(df_same_length["name"])