我有一個df
index col1
0 a,c
1 d,f
2 o,k
我需要這樣的df
index col1
0 {"col1":"a,c"}
1 {"col1":"d,f"}
2 {"col1":"o,k"}
這需要應用于 df 中的所有列。
嘗試東方,但不如預期。
uj5u.com熱心網友回復:
對于所有列使用 double apply,列名通過x.name,獲取字典:
df = df.apply(lambda x: x.apply(lambda y: {x.name: y}))
使用json:
import json
df = df.apply(lambda x: x.apply(lambda y: json.dumps({x.name: y})))
print (df)
col1
0 {"col1": "a,c"}
1 {"col1": "d,f"}
2 {"col1": "o,k"}
字典的替代解決方案:
df = pd.DataFrame({c: [{c: x} for x in df[c]] for c in df.columns}, index=df.index)
json 的 Alterative2 解決方案(如果所有列都由字串填充,則效果很好):
df = '{"' df.columns '": "' df.astype(str) '"}'
uj5u.com熱心網友回復:
如果您想要完全如圖所示的字串,請使用:
df['col1'] = '{col1:' df['col1'] '}'
# or
c = 'col1'
df[c] = f'{{{c}:' df[c] '}'
輸出:
0 {col1:a,c}
1 {col1:d,f}
2 {col1:o,k}
Name: col1, dtype: object
或者,帶引號:
df['col1'] = '{"col1":"' df['col1'] '"}'
# or
c = 'col1'
df[c] = f'{{"{c}":"' df[c] '"}'
輸出:
index col1
0 0 {"col1":"a,c"}
1 1 {"col1":"d,f"}
2 2 {"col1":"o,k"}
對于所有列:
df = df.apply(lambda c: f'{{"{c.name}":"' c.astype(str) '"}')
注意。確保“索引”是索引
對于字典:
df['col1'] = [{'col1': x} for x in df['col1']]
輸出:
index col1
0 0 {'col1': 'a,c'}
1 1 {'col1': 'd,f'}
2 2 {'col1': 'o,k'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/460579.html
