我正在嘗試根據日期和類別列聚合文本欄位。
下面是初始資料集的樣子
created_at,tweet,類別 7/29/2021,
倫敦板球大晴天,體育
7/29/2021,英格蘭擊球得分很高,體育
2021/7/29,總統發表明確宣告,政治
7/ 29/2021,奧運會將在日本舉行,體育
2021/7/29,恐怖襲擊已造成 10 人死亡,犯罪
2021/7/29,明年將舉行選舉,政治
2021/8/29,斯里蘭卡失去了 T20 系列,體育
2021 年 8 月 29 日,澳大利亞贏得了系列賽,體育
2021 年 8 月 29 日,部長上周一放棄了他的角色,政治
2021 年 8 月 29 日,總統正在挑戰對面的領導人,政治
所以我想要得到的預期輸出如下
created_at,tweet,類別
2021 年 7 月 29 日,倫敦板球大晴天 英國擊球奧運會將在日本舉行,體育
2021 年 7 月 29 日,總統發表明確宣告 選舉將繼續進行明年,政治
2021 年 7 月 29 日,恐怖襲擊已造成 10 人死亡,犯罪
2021 年 8 月 29 日,斯里蘭卡失去了 T20 系列 澳大利亞贏得了系列賽,體育
2021 年 8 月 29 日,部長放棄了他的角色上周一總統正在挑戰對面的領導人,政治
根據示例,我實際上想根據日期和類別聚合推文文本。以下是我過去在不考慮類別的情況下進行聚合的方式,我需要根據上面的輸出進行聚合。如果有人能回答這個問題,那將非常有幫助
import pandas as pd
def aggregated():
tweets = pd.read_csv(r'data_set.csv')
df = pd.DataFrame(tweets, columns=['created_at', 'tweet'])
df['created_at'] = pd.to_datetime(df['created_at'])
df['tweet'] = df['tweet'].apply(lambda x: str(x))
pd.set_option('display.max_colwidth', 0)
df = df.groupby(pd.Grouper(key='created_at', freq='1D')).agg(lambda x: ' '.join(set(x)))
return df
# Driver code
if __name__ == '__main__':
print(aggregated())
aggregated().to_csv(r'agg-1.csv',index = True, header=True)
uj5u.com熱心網友回復:
您可以使用:
out = df.groupby(['created_at', 'category'], sort=False, as_index=False)['tweet'] \
.apply(lambda x: ' '.join(x))[df.columns]
print(out)
輸出:
>>> out
created_at tweet category
0 7/29/2021 Great Sunny day for Cricket at London Great Score put on by England batting Olympic is to held in Japan sports
1 7/29/2021 President Made a clear statement An election is to be kept next year politics
2 7/29/2021 A terrorist attack have killed 10 people crime
3 8/29/2021 Srilanka have lost the T20 series Australia have won the series sports
4 8/29/2021 Minister have given up his role last monday President is challenging the opposite leader politics
uj5u.com熱心網友回復:
df 是您在第一個推文列中使用 groupby 制作串列并通過 apply 加入串列的示例
df = df.groupby(["created_at", "category"], as_index=False)["tweet"].agg(lambda x: list(x))
df["tweet"] = df1["tweet"].apply(lambda x:" ".join(x))
df = df.reindex(columns=["created_at", "tweet", "category"])
df
輸出:
created_at tweet category
0 7/29/2021 A terrorist attack have killed 10 people crime
1 7/29/2021 President Made a clear statement An election i... politics
2 7/29/2021 Great Sunny day for Cricket at London Great Sc... sports
3 8/29/2021 Minister have given up his role last monday Pr... politics
4 8/29/2021 Srilanka have lost the T20 series Australia ha... sports
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446422.html
