如果我有想要在已構建的 CSV 中添加為新列的資料。
我有一個字典,其中包含要為每個字典鍵添加的新資料(對應于 CSV 中的人的 ID)。
import pandas as pd
#New values to add for each ID
#'ID': Area, Age, Temperature
myData = {
'A00147': (189, 40, 39),
'A00198': (142, 28, 28),
'A00360': (202, 40, 39),
'A00367': (168, 33, 33),
'BA9330': (142, 29, 29),
}
我有這個 CSV:
ID,Sex,Height,Weight,Hair,Eyes A00147,Male,5 ft. 07 in.,185 lbs.,Brown,Blue A00198,Male,6 ft. 02 in.,190 lbs.,Red or Auburn,Brown A00360,Male,5 ft. 09 in.,167 lbs.,Gray or Partially Gray,Green A00367,Male,6 ft. 00 in.,245 lbs.,Black,Brown
我希望它變成:
ID,Sex,Height,Weight,Hair,Eyes,Area,Age,Temperature A00147,Male,5 ft. 07 in.,185 lbs.,Brown,Blue,189,40,39 A00198,Male,6 ft. 02 in.,190 lbs.,Red or Auburn,Brown,142,28,28 A00360,Male,5 ft. 09 in.,167 lbs.,Gray or Partially Gray,Green,202,40,39 A00367,Male,6 ft. 00 in.,245 lbs.,Black,Brown,142,29,29
所以我會將新列及其值添加到相應的 ID。
所以回圈的第一次迭代將查看字典 myData,查看第一個鍵('A00147'),檢查它是否存在于 CSV 的 ID 列中。如果是這樣,它將創建 3 個新列并添加它們各自的值。然后它會尋找'A00198',如果它在那里,在之前創建的新列中添加3個新值。如果它發現 CSV ID 中不存在的鍵(例如:'BA9330'),它會跳過它。
我正在考慮使用 Pandas 來完成這項任務,但不完全確定如何處理它。
uj5u.com熱心網友回復:
創建一個資料框,myData然后將其與您的實際資料集合并:
import pandas as pd
df = pd.read_csv('data.csv')
cols = ['Area', 'Age', 'Temperature']
df1 = (pd.DataFrame.from_dict(myData, orient='index', columns=cols)
.rename_axis('ID').reset_index())
out = df.merge(df1, on='ID', how='left')
out.to_csv('data.csv', index=False)
輸出:
| ID | 性別 | 高度 | 重量 | 頭發 | 眼睛 | 區域 | 年齡 | 溫度 |
|---|---|---|---|---|---|---|---|---|
| A00147 | 男性 | 5 英尺 07 英寸 | 185 磅。 | 棕色的 | 藍色的 | 189 | 40 | 39 |
| A00198 | 男性 | 6 英尺 02 英寸 | 190 磅。 | 紅色或赤褐色 | 棕色的 | 142 | 28 | 28 |
| A00360 | 男性 | 5 英尺 09 英寸 | 167 磅。 | 灰色或部分灰色 | 綠 | 202 | 40 | 39 |
| A00367 | 男性 | 6 英尺 00 英寸 | 245 磅。 | 黑色的 | 棕色的 | 168 | 33 | 33 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/472477.html
