2 回答
TA贡献1825条经验 获得超4个赞
您的 DataFrame 在“空”单元格中没有NaN,所以我假设:
每列的dtype是object(实际上是string),
“空”单元格包含空字符串或空格。
在这种情况下,一种可能的解决方案是:
用NaN替换空字符串/空格,
调用填充。
就像是:
df['D'] = df.A.replace(r'^\s*$', np.nan, regex=True).ffill()
编辑
如果要“向下复制”的值可以在任何列中(不仅在A中),那么解决方案是:
df['D'] = df.replace(r'^\s*$', np.nan, regex=True).ffill(axis=1)\ .iloc[:, -1].ffill()
与Anky在他的评论中提出的类似。
TA贡献1836条经验 获得超3个赞
基于@Mohit Motwani 评论的完整答案:
import pandas as pd
df = pd.DataFrame([[1, None, None], [None]*3,[None]*3,
[2,None,None], [None]*3,
[3,None,None], [None]*3, [None]*3, [None]*3,],
columns=["A","B","C"] )
print(df)
df["D"] = df["A"].ffill()
print(df)
之前的输出:
A B C
0 1.0 None None
1 NaN None None
2 NaN None None
3 2.0 None None
4 NaN None None
5 3.0 None None
6 NaN None None
7 NaN None None
8 NaN None None
输出后:
A B C D
0 1.0 None None 1.0
1 NaN None None 1.0
2 NaN None None 1.0
3 2.0 None None 2.0
4 NaN None None 2.0
5 3.0 None None 3.0
6 NaN None None 3.0
7 NaN None None 3.0
添加回答
举报