gpt4 book ai didi

python - 从部分字符串匹配创建新的 pandas 数据框

转载 作者:行者123 更新时间:2023-11-30 22:19:47 26 4
gpt4 key购买 nike

我有一个相对简单的数据框,如下所示(见下文)。其中一列“Book”是一个字符串列表。

我的目标是为“Book”中三个不同值中的每一个创建新的数据框。也就是说,一个数据框包含出现在国际中的每种产品、出现在国内的每种产品以及订阅。

我不知道如何创建一个根据现有数据框中匹配的部分字符串构建的新数据框。是否有内置的功能,或者我应该构建一个循环来迭代数据帧,并由此构建一个新的循环?

df

    Description      Book                               Product ID
0 Products International, Domestic X11
1 Products International X12
2 Products Domestic X13
3 Products Domestic, International X21
4 Services Subscription, Domestic X23
5 Services International, Domestic X23
6 Services Subscription, International, Domestic X25

我尝试过使用 Pandas isin 功能的不同组合,但这需要您知道您要查找的确切字符串。就我而言,Book 列可以具有三个值的任意顺序,因此我无法成功使用 isin。

我尝试的循环示例是:

f = []
for index,row in df.iterrows():
if "International" in row['Book']:
f.append

但是这会创建一个空列表,我知道这是不对的。我不太擅长在数据帧上构建循环,非常感谢任何建议。

我的目标输出将是如下所示的数据帧:

df

    Description      Book                               Product ID
0 Products International X11
1 Products International X12
2 Products International X21
3 Services International X23
4 Services International X25

df

    Description   Book                               Product ID
0 Products Domestic X11
2 Products Domestic X13
3 Products Domestic X21
4 Services Domestic X23
5 Services Domestic X25

订阅也是如此。我查看了其他多个 SO 问题,但无法找到在这种情况下有帮助的问题。

最佳答案

另一种方式:

国际:

df_international = df[df['Book'].str.contains('International')].reset_index(drop=True)
df_international.loc[:, 'Book'] = 'International'
print(df_international)
# Description Book Product ID
#0 Products International X11
#1 Products International X12
#2 Products International X21
#3 Services International X23
#4 Services International X25

国内:

df_domestic = df[df['Book'].str.contains('Domestic')].reset_index(drop=True)
df_domestic.loc[:, 'Book'] = 'Domestic'
print(df_domestic)
# Description Book Product ID
#0 Products Domestic X11
#1 Products Domestic X13
#2 Products Domestic X21
#3 Services Domestic X23
#4 Services Domestic X23
#5 Services Domestic X25

订阅:

df_subscription = df[df['Book'].str.contains('Subscription')].reset_index(drop=True)
df_subscription.loc[:, 'Book'] = 'Subscription'
print(df_subscription)
# Description Book Product ID
#0 Services Subscription X23
#1 Services Subscription X25

关于python - 从部分字符串匹配创建新的 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com