假设我有以下数据框。我想在 Stackoverflow/SO 上问一个关于我正在尝试执行的操作类型的问题。现在,为了帮助用户使用 SO,通常最好的做法是提供代码来重新生成有问题的数据帧。
sunlight
sum count
city date
SFO 2014-05-31 -1805.04 31
SFO 2014-06-30 -579.52 30
SFO 2014-07-31 1025.51 31
SFO 2014-08-31 -705.18 31
SFO 2014-09-30 -1214.33 30
我不想手动输入提供生成上述数据帧的代码所需的所有文本。是否有一个我可以调用的 pandas 函数/命令,它将以某种结构输出数据帧,人们可以轻松地将其复制并粘贴到 python/ipython 命令行中,以生成数据帧对象。类似 df.head().to_clipboard() 的东西,但不是复制 df 的显示,而是复制生成 df 所需的代码。
上面的数据帧相当简单,但对于复杂的数据帧,在 SO 问题中手动输入生成数据帧所需的代码非常麻烦。
最佳答案
使用to_dict()
假设您有这个df
df = pd.DataFrame(np.arange(16).reshape(4, 4), list('abcd'),
pd.MultiIndex.from_product([list('AB'), ['One', 'Two']]))
df
print df
A B
One Two One Two
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
我首先打印df.to_dict()
print df.to_dict()
{('B', 'One'): {'a': 2, 'c': 10, 'b': 6, 'd': 14}, ('A', 'Two'): {'a': 1, 'c': 9, 'b': 5, 'd': 13}, ('A', 'One'): {'a': 0, 'c': 8, 'b': 4, 'd': 12}, ('B', 'Two'): {'a': 3, 'c': 11, 'b': 7, 'd': 15}}
然后我将其复制并粘贴到 pd.DataFrame()
中。您可以稍微格式化复制的文本以提高可读性。
df = pd.DataFrame({('B', 'One'): {'a': 2, 'c': 10, 'b': 6, 'd': 14},
('A', 'Two'): {'a': 1, 'c': 9, 'b': 5, 'd': 13},
('A', 'One'): {'a': 0, 'c': 8, 'b': 4, 'd': 12},
('B', 'Two'): {'a': 3, 'c': 11, 'b': 7, 'd': 15}})
df
print df
A B
One Two One Two
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
关于python - 在 pandas 中为 Stackoverflow/SO 问题重新生成数据框的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38600508/