[英]Convert a .csv file into a specified style with Python by jupyter
該文件如下所示:
第一列是user_id
,第二列是joke 1
的評分,rest 可以用同樣的方式完成。 我想將上面顯示的文件轉換為如下格式:
user_id | joke_id | rating
--------------------------
1 | 1 | -7.82
1 | 2 | 8.79
此外,轉換后,由於正常評分在-10到+10之間,數字99表示用戶沒有為相應的笑話評分,應該被刪除。
您的問題涉及多個步驟,請避免將所有問題混為一談。 根據您的問題,以下步驟會有所幫助:
pandas
重新讀取csv
文件import pandas as pd
raw = pd.read_csv('PATH-TO-FILE')
melt
DataFrame
由於僅提供圖像,因此將使用示例 DataFrame 代替。
raw = pd.DataFrame([[1, -7, 8, 99], [2, 4, 0, 6]], columns = ['user_id', 'joke_1', 'joke_2', 'joke_3'])
user_id joke_1 joke_2 joke_3
0 1 -7 8 99
1 2 4 0 6
使用melt
取消旋轉 DataFrame :
df = pd.melt(raw, id_vars=['user_id'], value_vars=['joke_1', 'joke_2', 'joke_3'], var_name='joke', value_name='rating')
user_id joke rating
0 1 joke_1 -7
1 2 joke_1 4
2 1 joke_2 8
3 2 joke_2 0
4 1 joke_3 99
5 2 joke_3 6
使用pandas
,您可以輕松過濾 DataFrame 條件:
df_processed = df[df.rating != 99].reset_index(drop=True)
請注意reset_index()
用於清理索引,與您的問題無關。
以上希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.