如何使用python组合df行?
我正在尝试连接包含字符串的数据帧的行。我想检查该行是否包含如何使用python组合df行?,python,pandas,numpy,conda,nan,Python,Pandas,Numpy,Conda,Nan,我正在尝试连接包含字符串的数据帧的行。我想检查该行是否包含NaN,如果是,则从该行中删除NaN,并将其余部分与该行上方的一个连接起来。最后删除包含NaN的行 以下是我的示例数据: df=[["d","t","u","y","e"],["d",np.nan,np.nan,np.nan,"o"],["y","p","p","w","r"]] df=pd.DataFrame(df) print(df) 0 1 2 3 4 d t u y e d NaN Na
NaN
,如果是,则从该行中删除NaN
,并将其余部分与该行上方的一个连接起来。最后删除包含NaN的行
以下是我的示例数据:
df=[["d","t","u","y","e"],["d",np.nan,np.nan,np.nan,"o"],["y","p","p","w","r"]]
df=pd.DataFrame(df)
print(df)
0 1 2 3 4
d t u y e
d NaN NaN NaN o
y p p w r
我希望输出与下面的一样
0 1 2 3 4
dd t u y eo
y p p w r
这是我的审判,但没有运气
for i in range(len(df)):
for j in range(len(df.iloc[1,])):
if(pd.isnull(df.iloc[i,j])==True):
df.concat(df.iloc[i,j],df.iloc[i-1,j])
df.dropna(df.iloc[:,i])
我是Python新手,有人能帮我吗。的想法是为分组创建助手
系列
因此,首先使用为至少有一个NaN
s的所有行创建掩码,使用构造函数创建Series
,将不匹配的值替换为NaN
s,并使用limit=1为上述相同组的缺失值回填,以便仅替换上面的一行
最后将所有缺少的值替换为空值,分组并聚合连接:
m = df.isna().any(axis=1)
s = pd.Series(np.arange(len(m)), index=df.index)
g = s.where(m).bfill(limit=1).fillna(s)
df = df.fillna('').groupby(g).agg(''.join).reset_index(drop=True)
print (df)
0 1 2 3 4
0 dd t u y eo
1 y p p w r
非常感谢您的及时帮助。这个很好用。我花了几个小时才弄明白。