我有一個包含許多列的資料框,尤其是包含一個陣列值的列,例如:
Name City Details
Nicolas Paris [1 5 3 2]
Adam Rome [5 3 45 0]
我嘗試將詳細資訊列與標量相乘
df_results.loc[:,'Values'] = df_results.loc[:,'Values'].mul(5)
# or like that
df_results.loc[:,'Values'] = df_results['Values'] * 5
但我收到此訊息不能將序列乘以“float”型別的非整數
預期成績
Name City Details
Nicolas Paris [5 25 15 10]
Adam Rome [25 15 225 0]
有任何想法嗎?
uj5u.com熱心網友回復:
applymap與檢查單元格型別的條件一起使用:
x = [
["Name","City","Details"],
["Nicolas","Paris",[1,5,3,2]],
["Adam","Rome",[5,3,45,0]],
]
import pandas as pd
df = pd.DataFrame(x)
df.applymap(lambda x: [y*2 for y in x] if isinstance(x, list) else x)
如果它是一個串列,使用串列理解來應用一些操作(如乘以 2)
uj5u.com熱心網友回復:
也可以通過使用 numpy 來做到這一點:
import pandas as pd
import numpy as np
df=pd.DataFrame(columns=['Name','City','Details'])
df['Name']=['Nicolas','Adam']
df['City']=['Paris','NY']
df['Details']=[[1,5,3,2],[5,3,45,0]]
df['Details']=[np.array(i)*5 for i in df['Details'].values]
結果:
Name City Details
0 Nicolas Paris [5, 25, 15, 10]
1 Adam NY [25, 15, 225, 0]
uj5u.com熱心網友回復:
如果您只想乘以“詳細資訊”列,則可以 通過使用 apply 而不是 applymap 并且不檢查它是否是串列來簡化DSteman 的答案:
import pandas as pd
df_results = pd.DataFrame({
'Name': ['Nicolas', 'Adam'],
'City': ['Paris', 'Rome'],
'Details': [[1, 5, 3, 2], [5, 3, 45, 0]]
})
df_results['Details'] = df_results['Details'].apply(lambda x: [value * 5 for value in x])
導致:
Name City Details
0 Nicolas Paris [5, 25, 15, 10]
1 Adam Rome [25, 15, 225, 0]
uj5u.com熱心網友回復:
df['Details'] = df['Details'].map(lambda x: [value * 5 for value in x])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402276.html
上一篇:查找重復項,先保留并替換其余部分
