如何使用基于其他列的值填充列';Python中的s值?
我有一个数据框,看起来像这样: 可乐 可乐 可乐 1.记录 附件1 附件二 价值1 价值2 2.记录 附件三 价值1 价值2 3.记录 附件四 价值1 附件5 价值1 价值2如何使用基于其他列的值填充列';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
我认为这是一个重要的条件-例如,这里是使用
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$