Python 我有一个包含两列(A列和B列)的数据框架
在A栏中有三句话(ABC、DEF、GHI)。句子以&**开头,以“”结尾 ** 例如:这是一个句子Python 我有一个包含两列(A列和B列)的数据框架,python,regex,Python,Regex,在A栏中有三句话(ABC、DEF、GHI)。句子以&**开头,以“”结尾 ** 例如:这是一个句子 Column A Column B (('<s>', '<s>'), 'abc') 0.043025210084033615 (('<s>', 'abc'), 'abc') 0.65234375 (('abc', 'abc'), 'abc')
Column A Column B
(('<s>', '<s>'), 'abc') 0.043025210084033615
(('<s>', 'abc'), 'abc') 0.65234375
(('abc', 'abc'), 'abc') 0.04259501965923984
(('abc', 'abc'), 'abc') 0.18604651162790697
(('abc', 'abc'), '</s>') 0.41317365269461076
(('abc', '</s>'), '</s>') 0.011148272017837236
A列B列
(“,”和“abc”)0.043025210084033615
((“‘abc’,‘abc’)0.65234375
((‘abc’、‘abc’、‘abc’)0.04259501965923984
((‘abc’、‘abc’、‘abc’)0.18604651162790697
((‘abc’,‘abc’,“”)0.41317365269461076
((‘abc’,“”),“”)0.011148272017837236
当一个句子以结束标记“”)结尾时,“”“我想将B列乘以一个特定句子的所有行
示例:(0.04302521*0.65234375*0.04259502*0.186046512*0.413173653*0.011148272=1.02452)
我想得到每个数据帧的输出
Column A Column B
(('<s>', '<s>'), 'abc') 0.043025210084033615
(('<s>', 'abc'), 'abc') 0.65234375
(('abc', 'abc'), 'abc') 0.04259501965923984
(('abc', 'abc'), 'abc') 0.18604651162790697
(('abc', 'abc'), '</s>') 0.41317365269461076
(('abc', '</s>'), '</s>') 0.011148272017837236
(('<s>', '<s>'), 'def') 0.09090909090909091
(('def', 'def'), 'def') 0.008287292817679558
(('def', 'def'), 'def') 0.13506493506493505
(('def', 'def'), '</s>') 0.007653061224489796
(('def', '</s>'), '</s>') 0.08333333333333333
(('<s>', '<s>'), 'ghi') 0.5
(('ghi', 'ghi'), 'ghi') 0.125
(('ghi', 'ghi'), 'ghi') 0.033766233766233764
(('ghi', 'ghi'), '</s>') 0.0694980694980695
(('ghi','</s>'), '</s>') 0.16666666666666666
A列B列
(“,”和“abc”)0.043025210084033615
((“‘abc’,‘abc’)0.65234375
((‘abc’、‘abc’、‘abc’)0.04259501965923984
((‘abc’、‘abc’、‘abc’)0.18604651162790697
((‘abc’,‘abc’,“”)0.41317365269461076
((‘abc’,“”),“”)0.011148272017837236
(“,”和“def”)0.091
((‘def’、‘def’、‘def’)0.008287292817679558
((‘def’、‘def’、‘def’)0.13506493506493505
((“def”,“def”),“”)0.007653061224489796
((‘def’,“”),“”)0.08333
((''),“ghi”)0.5
((‘ghi’、‘ghi’、‘ghi’)0.125
((‘ghi’、‘ghi’、‘ghi’)0.033766233766233764
((‘ghi’,‘ghi’,“”)0.06949806694980695
((‘ghi’,“”),“”)0.1666666
输出应为:(0.04302521*0.65234375*0.04259502*0.186046512*0.413173653*0.011148272=1.02452)
(0.090909091*0.008287293*0.135064935*0.007653061*0.083333333=6.48958)
(0.5*0.125*0.033766234*0.069498069*0.1666667=2.44447)
输出应采用以下格式
1.02452
6.48958
2.44447一种方法是创建一列“句子”,以便稍后使用
groupby
。假设您的数据帧被称为df
。我使用0创建此列
df['sentence'] = 0
现在,在A列包含('',)
的列中输入1,然后使用cumsum
为每个句子指定不同的数字:
df['sentence'].loc[df['Column A'].str.contains("('<s>', '<s>')")] = 1
df['sentence'] = df['sentence'].cumsum()
根据您对结果的wan方式,您可以使用
df.groupby('句')['Column B'].prod().tolist()
将其作为列表来获取在同一句话的新“bloc”之前是否总是有('',)
,熊猫数据框中的字符串模式我想将B列乘以特定句子的所有行Hello Ben.T谢谢你的帮助!当我执行下面的代码时:df['station'].loc[df['Column A'].str.contains(“('',”)”)=1键错误:'[nan nan nan\n nan]不在索引中'@Balu不确定没有您的准确输入它是什么。在做我的回答之前,请尝试df=df.reset\u index(drop=True)
也许索引号有问题我用你的代码试过了,但我仍然面临同样的问题df=df.reset\u index(drop=True)
Iam遇到下面的错误文件“C:\ProgramData\Anaconda3\lib\site packages\pandas\core\index.py”,第1327行,在"convert_to_indexer.format(mask=objarr[mask])中,keyror:“[nan nan nan nan\n nan]不在索引中”@Balu如果执行type(df['Column A'].loc[0])
?@Ben T在用0创建一个列(句子)之后,我运行下面的命令它被执行为df['Column A']=df['Column A'].astype(str)
df.groupby('sentence')['Column B'].prod()
Out[527]:
sentence
1.0 1.024519e-06
2.0 6.489579e-08
3.0 2.444467e-05
Name: Column B, dtype: float64