gpt4 book ai didi

python - 如何根据 Python 中的列从 DataFrame 复制行?

转载 作者:行者123 更新时间:2023-12-04 07:48:28 25 4
gpt4 key购买 nike

我需要根据列(数字)复制一行。
我有这个数据框:

         Kids       City Preferred Transport  Count
0 Sofia Boston Bus 1.0
1 Claire Ann NaN NaN 1.0
2 Joe Detroit Train 3.0
3 Betty NaN Car 2.0
4 Archie Bruxelles NaN 1.0
5 Joe NaN Airplane 3.0
6 Phil Berlin Ship 1.0
7 Luke NaN Airplane 1.0
每个 child 都有一个计数。它应该与 Count 列中显示的数字一样多地出现在数据框中。 (例如:应该只有 1 个 Sofia、2 个 Bettys 和 3 个 Joes)。但只复制他们的名字,像这样:
         Kids       City Preferred Transport  Count
0 Sofia Boston Bus 1.0
1 Claire Ann NaN NaN 1.0
2 Joe Detroit Train 3.0
3 Betty NaN Car 2.0
4 Archie Bruxelles NaN 1.0
5 Joe NaN Airplane 3.0
6 Phil Berlin Ship 1.0
7 Luke NaN Airplane 1.0
8 Joe NaN NaN 3.0
9 Betty NaN NaN 2.0
我使用 Pandas 尝试了此代码: kid = nyc_trip_df.loc[nyc_trip_df['Kids'].count() > nyc_trip_df['Count'], 'Kids']因为我认为我将所有名字出现的 child 都放在比相应数字少的地方是个好主意,但我在某处失败了。如果它成功了,那么我只会将 children 附加到数据帧中,但我不确定这是最好的方法。...
你能帮我吗?
我怎样才能使这项工作?

最佳答案

解决方案

s1 = df['Kids'].value_counts()
s2 = df.groupby('Kids')['Count'].first()

df = df.append(s2.loc[s2.index.repeat(s2 - s1)].reset_index(), ignore_index=True)
说明
计算 count Kids 中唯一值的数量列使用 value_counts
>>> s1

Joe 2
Sofia 1
Betty 1
Claire Ann 1
Phil 1
Luke 1
Archie 1
Name: Kids, dtype: int64
Group数据框来自 Kids列并聚合 Count列使用 first
>>> s2

Kids
Archie 1.0
Betty 2.0
Claire Ann 1.0
Joe 3.0
Luke 1.0
Phil 1.0
Sofia 1.0
Name: Count, dtype: float64
s2来自 s1创建一个系列,其中包含每个 Kid 的名字应该重复的次数
>>> s2 - s1

Archie 0.0
Betty 1.0
Claire Ann 0.0
Joe 1.0
Luke 0.0
Phil 0.0
Sofia 0.0
dtype: float64
现在,重复索引 s2使用上述计算的重复次数
>>> s2.loc[s2.index.repeat(s2 - s1)]

Kids
Betty 2.0
Joe 3.0
Name: Count, dtype: float64
Append以上对原始数据帧的重复 df
>>> df

Kids City Preferred Transport Count
0 Sofia Boston Bus 1.0
1 Claire Ann NaN NaN 1.0
2 Joe Detroit Train 3.0
3 Betty NaN Car 2.0
4 Archie Bruxelles NaN 1.0
5 Joe NaN Airplane 3.0
6 Phil Berlin Ship 1.0
7 Luke NaN Airplane 1.0
8 Betty NaN NaN 2.0
9 Joe NaN NaN 3.0

关于python - 如何根据 Python 中的列从 DataFrame 复制行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67093862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com