gpt4 book ai didi

Python 和 Pandas : a proper way to fetch data from a dataframe and create a new one

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:45 25 4
gpt4 key购买 nike

这个问题经常出现,我当前的方法不是最佳方法。

例如。

我有一个包含一些数据的数据框(df1):

date          tweet                    sent_by

2017/01/01 'OMG @user2 @POTUS' user1
2017/01/01 'THIS IS A TWEET!' user17
...... ..... ......

我有一个用户列表:

user_list = ['user1','user2', ...]

现在我想检查 df1 并检查推文中是否提到了任何用户(不包括发件人),并创建一个包含相关信息的新数据帧 (df2)。

我当前的方法:

date_list = []
tweet_list = []
sent_by_list = []
user_mentioned_list = []

for i in range(len(df1)):
for user in user_list:
if user in df1['tweet'][i] and user != df1['sent_by'][i]:
date_list.append(df1['date'][i])
tweet_list.append(df1['tweet'][i])
sent_by_list.append(df1['sent_by'][i])
user_mentioned_list.append(user)

df2 = pd.DataFrame()
df2['date'] = date_list
df2['tweet'] = tweet_list
df2['sent_by'] = sent_by_list
df2['user_mentioned'] = user_mentioned_list

获取数据并形成新数据框的最佳方式是什么?

最佳答案

我认为你需要extract通过 list| 正则表达式(或) 然后与 isin 进行比较,最后按 boolean indexing 过滤:

print (df1)
date tweet sent_by
0 2017/01/01 'OMG @user2 @POTUS' user1
1 2017/01/01 'OMG @user2 @POTUS' user2
2 2017/01/01 'OMG @user2 @POTUS' user4
3 2017/01/01 'OMG @user4 @POTUS' user1
4 2017/01/01 'THIS IS A TWEET!' user17

user_list = ['user1','user2']
pat = '(' + '|'.join(user_list) + ')'
df1['user_mentioned'] = df1['tweet'].str.extract(pat, expand=False)
df2 = df1[df1['user_mentioned'].isin(user_list) & (df1['user_mentioned']!= df1['sent_by'])]
print (df2)
date tweet sent_by user_mentioned
0 2017/01/01 'OMG @user2 @POTUS' user1 user2
2 2017/01/01 'OMG @user2 @POTUS' user4 user2

详细信息:

print (df1)
date tweet sent_by user_mentioned
0 2017/01/01 'OMG @user2 @POTUS' user1 user2
1 2017/01/01 'OMG @user2 @POTUS' user2 user2
2 2017/01/01 'OMG @user2 @POTUS' user4 user2
3 2017/01/01 'OMG @user4 @POTUS' user1 NaN
4 2017/01/01 'THIS IS A TWEET!' user17 NaN

关于Python 和 Pandas : a proper way to fetch data from a dataframe and create a new one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47329235/

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