英文:
How to explode Python Pandas Dataframe and merge strings from other dataframe?
问题
Dataframe1
中有大量的数据行和列。其中一列是Text
。Text
列中的某些行包含字符串,其中一些字符串包含了{ExplodeEList2}
。
如何将Dataframe1
中的这些特定行展开并将每个字符串中的{ExplodeEList2}
替换为分开的数据框EList2['Name']
中的每个名称?谢谢!我已经整天在尝试解决这个问题了。
Dataframe1
:
Text |
---|
不相关的数据 |
随机示例文本 {ExplodeElist2} 和更多随机示例文本。 |
其他不相关的数据 |
EList2
:
Name |
---|
Jack |
Jon |
Sally |
我应该如何在Dataframe1
中生成以下结果:
Text |
---|
不相关的数据 |
随机示例文本 Jack 和更多随机示例文本。 |
随机示例文本 Jon 和更多随机示例文本。 |
随机示例文本 Sally 和更多随机示例文本。 |
其他不相关的数据 |
英文:
Dataframe1
has a lot of rows and columns of data. One column is Text
. Certain rows in Text
column have strings and some strings include within the strings this {ExplodeEList2}
How to explode (expand) those specific rows of Dataframe1
and replace {ExplodeEList2}
in each string with each name contained in the separate dataframe EList2['Name']
? Thank you! I've been banging my head against my keyboard all day trying to solve this.
Dataframe1
:
Text |
---|
Unrelated data |
Random sample text {ExplodeElist2} and more random sample text. |
Other unrelated data |
EList2
:
Name |
---|
Jack |
Jon |
Sally |
How do I generate this in Dataframe1
:
Text |
---|
Unrelated data |
Random sample text Jack and more random sample text. |
Random sample text Jon and more random sample text. |
Random sample text Sally and more random sample text. |
Other unrelated data |
答案1
得分: 1
你可以使用 apply
来处理 DataFrame1
中包含字符串 ExplodeElist2
的所有 Text
值,将该字符串替换为一组替代值。然后,你可以使用 explode
来展开该列表:
mask = DataFrame1['Text'].str.contains('{ExplodeElist2}')
DataFrame1.loc[mask, 'Text'] = DataFrame1.loc[mask, 'Text'].apply(lambda s:展开收缩])
DataFrame1 = DataFrame1.explode('Text').reset_index(drop=True)
输出(针对你的示例数据):
Text
0 无关数据
1 随机示例文本 Jack 和更多随机示例文本...
2 随机示例文本 Jon 和更多随机示例文本 ...
3 随机示例文本 Sally 和更多随机示例文本...
4 其他无关数据
英文:
You can use apply
to process all the Text
values in DataFrame1
which contain the string ExplodeElist2
, replacing the string with a list of replaced values. You can then explode
that list:
mask = DataFrame1['Text'].str.contains('{ExplodeElist2}')
DataFrame1.loc[mask, 'Text'] = DataFrame1.loc[mask, 'Text'].apply(lambda s:展开收缩])
DataFrame1 = DataFrame1.explode('Text').reset_index(drop=True)
Output (for your sample data):
Text
0 Unrelated data
1 Random sample text Jack and more random sample...
2 Random sample text Jon and more random sample ...
3 Random sample text Sally and more random sampl...
4 Other unrelated data
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论