我正在尝试使用 pandas
DataFrame 创建字典。
import pandas as pd
df = pd.DataFrame({'name': ["p1","p1","p2","p2","p2"],
'val': [0, 1, np.nan, 1, 0] })
我想创建一个字典,其中name
列作为key
,val
列作为values
。值将是一个列表。我正在使用 for 循环
,因为 DataFrame 只有 100 行。
mydict = dict()
valList = []
for index, row in df.iterrows():
# create list of values
......
mydict[row['name']] = valList
预期输出:
{
'p1': [0, 1],
'p2': [nan, 1, 0]
}
对其他方法持开放态度,但我稍微倾向于使用 for 循环和 iterrows()
。
最佳答案
您可以使用groupby
和字典理解:
d = {k:list(v) for k,v in df.groupby('name')['val']}
输出:
{'p1': [0.0, 1.0], 'p2': [nan, 1.0, 0.0]}
使用 iterrows(不是我最喜欢的选项)
注意。这在大型数据帧上会相当慢
from collections import defaultdict
d = defaultdict(list)
for _, row in df.iterrows():
d[row['name']].append(row['val'])
dict(d)
关于python - 迭代 pandas DataFrame 中的行并创建一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71009971/