- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何检查“B”列单元格(它可能包含多行)中的值是否在“A”列中,如果是 - 插入孔行(例如,其中我有值 m32\nm83\nm18 )在“A”列中找到匹配项的行下方(例如 m32)?
这是数据框:
df
A B C
m55 m32\nm83\nm18 123
m56 m12 546
m68
m32
m83
m65
m73 m77\nm78 558
m23
m98
m77
m18
m4
m12
m78
这就是我想要得到的:
df
A B C
m55 m32\nm83\nm18 123
m56 m12 546
m68
m32
m55 m32\nm83\nm18 123
m83
m55 m32\nm83\nm18 123
m65
m73 m77\nm78 558
m23
m98
m77
m73 m77\nm78 558
m18
m55 m32\nm83\nm18 123
m4
m12
m56 m12 546
m78
m73 m77\nm78 558
我尝试过这个:
def insert_row(idx, df, df_insert):
return df.iloc[:idx, ].append(df_insert).append(df.iloc[idx:, ]).reset_index(drop = True)
dfB = dfB[dfB.apply(lambda x: isinstance(x, str))]
dfBidx = dfB.index
j=0
for b in dfBidx:
try:
idx = df.index[df["A"].apply(lambda x: isinstance(x, str)).str.contains("|".join(dfB[b].split("\n")))]
for i in idx:
i+=j
df_new = df.loc[i]
df = insert_row(i+j+1, df, df_new)
j+= int(df_new.size/len(df_new.columns.values))
except:
pass
还有其他方法可以做到这一点吗?我在“A”列中遇到 NaN 值问题,并且通常在使用函数时存在一些不匹配:
str(), contains(), apply()
编辑:
我有第二个数据框(df2),我从中提取行并将其插入到 df 中。我正在从“关键字”列中的“测试”到“测试”提取行。
df2
Keyword B C
test m32\nm83\nm18 123
something
something
something
test
something
something
test m12 546
something
test m77\nm78 558
test
something
所以,最后我需要这个:
df
A Keyword B C
m55 m32\nm83\nm18 123
m56 m12 546
m68
m32
test m32\nm83\nm18 123
something
something
something
m83
test m32\nm83\nm18 123
something
something
something
m65
m73 m77\nm78 558
m23
m98
m77
test m77\nm78 558
m18
test m32\nm83\nm18 123
something
something
something
m4
m12
test m12 546
something
m78
test m77\nm78 558
最佳答案
使用默认 RangeIndex
的解决方案。
使用源行索引 (d1
) 和列表理解重复行创建插入行索引的 Crate 字典,还添加 0.5
以确保正确排序。最后concat
一起,sort_index
并通过 reset_index
创建默认索引:
d = df['B'].dropna().to_dict()
print (d)
{0: 'm32\\nm83\\nm18', 1: 'm12', 6: 'm77\\nm78'}
d1 = {k: df.index[df['A'].str.contains("|".join(v.split("\\n")))] for k, v in d.items()}
print (d1)
{0: Int64Index([3, 4, 10], dtype='int64'),
1: Int64Index([12], dtype='int64'),
6: Int64Index([9, 13], dtype='int64')}
L = [pd.concat([df.loc[[k]]] * len(v)).set_index([v + .5]) for k, v in d1.items()]
df = pd.concat([df] + L).sort_index().reset_index(drop=True)
print (df)
A B C
0 m55 m32\nm83\nm18 123.0
1 m56 m12 546.0
2 m68 NaN NaN
3 m32 NaN NaN
4 m55 m32\nm83\nm18 123.0
5 m83 NaN NaN
6 m55 m32\nm83\nm18 123.0
7 m65 NaN NaN
8 m73 m77\nm78 558.0
9 m23 NaN NaN
10 m98 NaN NaN
11 m77 NaN NaN
12 m73 m77\nm78 558.0
13 m18 NaN NaN
14 m55 m32\nm83\nm18 123.0
15 m4 NaN NaN
16 m12 NaN NaN
17 m56 m12 546.0
18 m78 NaN NaN
19 m73 m77\nm78 558.0
关于python - 从另一列中的每一行单元格中搜索字符串,如果找到匹配项,则在 pandas 中找到的匹配项下方插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53863660/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!