python - Python,熊猫:如何将系列附加到数据框
问题描述
我有以下数据框df1:
import pandas as pd
data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy', 'Lisa', 'Molly', 'Lisa', 'Molly', 'Fred'],
'gender': ['m', 'f', 'f', 'm', 'f', 'f', 'f', 'f','f', 'm'],
}
df1 = pd.DataFrame(data, index = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
我想创建一个包含一些标准和一些自定义摘要统计 df2 的表。
df2 = df1.describe()
df2.rename(index={'top':'mode'},inplace=True)
df2.rename(index={'freq':'mode freq'},inplace=True)
df2
df2:
gender name
count 10 10
unique 2 7
mode f Molly
mode freq 7 3
我想为第二种模式在 df2 中添加一行,为第二种模式的频率添加一行:
例子:
gender name
count 10 10
unique 2 7
mode f Molly
mode freq 7 3
2nd mode m Lisa
2nd freq 3 2
我发现您可以通过以下方式获得第二种模式和频率:
my_series
for column in df1:
my_series=df1[column].value_counts()[1:2]
print(my_series)
但是我如何将它附加到df2?
解决方案
您可以apply
使用value_counts
,然后我们需要修改您的数据框形状。
df1.apply(lambda x : x.value_counts().iloc[[1]]).stack().reset_index(level=0).T
Out[172]:
name gender
level_0 Lisa m
0 2 3
最终输出(使用您向我们展示的内容更改索引名称rename
)
pd.concat([df1.describe(),df1.apply(lambda x : x.value_counts().iloc[[1]]).stack().reset_index(level=0).T])
Out[173]:
gender name
count 10 10
unique 2 7
top f Molly
freq 7 3
level_0 m Lisa
0 3 2
推荐阅读
- python - 合并排序执行中的逻辑错误
- node.js - Express:自动查看路由
- git - 让 git diff 忽略两个文件中的时间戳
- python - 为什么我的嵌套while循环不起作用python?
- c# - 微服务:针对外部服务的 C# WebAPI 授权。(端点)
- python - 我正在使用 Beautiful Soup 从网站获取标题,但它没有返回任何内容
- java - 为什么在我订阅 DolphinDB java api 时返回此错误消息
- django - 如何防止用户同时是两种类型?
- electron - 电子 winstaller 在错误的组中创建快捷方式
- javascript - 在表单内提交按钮而不重新加载表单