如何使用基于其他列的值填充列';Python中的s值?

如何使用基于其他列的值填充列';Python中的s值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,看起来像这样: 可乐 可乐 可乐 1.记录 附件1 附件二 价值1 价值2 2.记录 附件三 价值1 价值2 3.记录 附件四 价值1 附件5 价值1 价值2 我认为这是一个重要的条件-例如,这里是使用df['col1'].str.contains('^\d')替换col1值,从数字开始,然后通过ffill向前填充缺失的值: df['col4'] = df['col1'].where(df['col1'].str.contains('^\d')).ffill() print (d

我有一个数据框,看起来像这样:

可乐 可乐 可乐 1.记录 附件1 附件二 价值1 价值2 2.记录 附件三 价值1 价值2 3.记录 附件四 价值1 附件5 价值1 价值2
我认为这是一个重要的条件-例如,这里是使用
df['col1'].str.contains('^\d')
替换
col1
值,从数字开始,然后通过
ffill
向前填充缺失的值:

df['col4'] = df['col1'].where(df['col1'].str.contains('^\d')).ffill()
print (df)
        col1    col2    col3       col4
0  1. record                  1. record
1       att1                  1. record
2       att2  value1  value2  1. record
3  2. record                  2. record
4       att3  value1  value2  2. record
5  3. record                  3. record
6       att4  value1          3. record
7       att5  value1  value2  3. record
或测试
记录

df['col4'] = df['col1'].where(df['col1'].str.contains('record')).ffill()

你已经试过什么了?我试过使用str.contains()if else语句的for循环,但效果不太好。谢谢你的快速响应!我突然想到一个问题,如果任何属性也以col1中的数字开头,该怎么办?@trefa-Hmmm,那么它失败了。我认为条件取决于数据,因此添加到可能的掩码中,但如果必须指定失败,如何将组的SH值与另一个VAL区分开来?@anik jha-从更改的数据中不可能通过
col2,col3
中的空字符串进行匹配,因为第一组失败。@jezrael谢谢,“记录”一个回答了我的问题,我刚刚更改了
^[1-9][0-9]?\.的正则表达式record$