gpt4 book ai didi

python - 如何使用python组合df行?

转载 作者:行者123 更新时间:2023-12-04 10:22:29 26 4
gpt4 key购买 nike

我正在尝试连接包含字符串的数据框的行。我想检查该行是否包含 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 新手,任何人都可以帮我解决这个问题。

最佳答案

想法是创造 helper Series用于分组。

所以首先为所有行创建掩码,至少有一个 NaN来自 DataFrame.isna DataFrame.any , 创建 Series通过构造函数,将不匹配的值替换为 NaN来自 Series.where 并使用 limit=1 回填上述相同组的缺失值仅替换上面的一行。

最后将所有缺失值替换为空值,分组和聚合 join :

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

关于python - 如何使用python组合df行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60785731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com