import pandas as pd
tabel = [{'192.168.70.150': '30'},
{'192.168.72.15': '38'},
{'192.168.72.150': '29'}]
df = pd.DataFrame(tabel)
print df输出为:
192.168.70.150 192.168.72.15 192.168.72.150
0 30 NaN NaN
1 NaN 38 NaN
2 NaN NaN 29 但我想说的是:
192.168.70.150 30
192.168.72.15 38
192.168.72.150 29我需要在代码中修改什么?
发布于 2018-02-01 23:07:02
您需要stack
df.stack()
Out[349]:
0 192.168.70.150 30
1 192.168.72.15 38
2 192.168.72.150 29
dtype: object或者,您可以将您的字典列表展平为字典,然后使用pd.Serise
df = pd.Series({k: v for d in tabel for k, v in d.items()})
df
Out[353]:
192.168.70.150 30
192.168.72.15 38
192.168.72.150 29
dtype: object发布于 2018-02-01 23:14:11
从字典创建df时,键将是列,值将是行。使用列表来实现你的目标。
>>> import pandas as pd
>>> tabel = [['192.168.70.150', '30'],
... ['192.168.72.15', '38'],
... ['192.168.72.150', '29']]
>>> df = pd.DataFrame(table, columns=['IP', 'Value'])
>>> df
IP Value
0 192.168.70.150 30
1 192.168.72.15 38
2 192.168.72.150 29发布于 2018-02-01 23:18:27
如果可能,最好是在list comprehension中创建tuple%s
tabel = [{'192.168.70.150': '30'},
{'192.168.72.15': '38'},
{'192.168.72.150': '29'},
{'192.168.72.150': '20'}]
L = [(a, b) for d in tabel for a, b in d.items()]
df = pd.DataFrame(L, columns=['a','b'])
print (df)
a b
0 192.168.70.150 30
1 192.168.72.15 38
2 192.168.72.150 29
3 192.168.72.150 20https://stackoverflow.com/questions/48565850
复制相似问题