【发布时间】:2017-08-01 05:25:16
【问题描述】:
在这个小数据框中:
d1 = pd.read_csv('to_count.mcve.txt', sep='\t')
M1 M2 F1
A,B,A,C,D A,C,B,C,B A
A,B,B,C,B A,B,A B
C,B,C,D,E B,C E
步骤 01:
我要数F1中有多少个值在M1和M2中
我能做到:
d1_count = d1.apply(lambda x: x.loc[::].str.count(x.F1), 1)
输出:
M1 M2 F1
2 1 1
3 1 1
1 0 1
步骤 02: 但如果原始单元格的长度超过 3(不包括逗号),我想将计数除以 2。
解释:
M1 中的所有值的长度都大于 3,第一个 M2 的长度大于 3。因此,需要更改这些值的计数(除以 2)。
M1中的第一个值为
A,B,A,C,D- F1 值为
A,M1 中有 2 个“A”,使用.str.count(x.F1)计数 - 因为
A,B,A,C,D的长度大于3。我现在改变计数(除以2),得到1。 - 我想自动为所有列执行此操作,因为会有很多列。
最终的预期输出是:
M1 M2
1 0.5
1.5 1
0.5 0
任何建议。
【问题讨论】:
-
什么是“单元格”,它的“长度”是多少?
-
你可以使用 sum...
-
熊猫数据框中的每个单元格都是
columns and rows的交集。第一个单元格是数据A,B,A,C,D -
"cell" 不是标准术语,我知道您的意思,但如果您准确,它会有所帮助。你在做什么,字符串? “长度”是什么意思?字符串长度?或字符串中的字母数,不包括逗号?
-
@WillemVanOnsem:你能建议怎么做吗?我可以计算每个单元格的长度,但这不是我想要的。我想:计算
M1 and M2中F1的值的数量,但如果M1 and M2的原始长度超过一定长度,我想将该计数除以2。
标签: python pandas count apply string-length