gpt4 book ai didi

python - Pandas 通过其他列的数量来填充列

转载 作者:行者123 更新时间:2023-12-02 04:14:00 25 4
gpt4 key购买 nike

示例 df:

     company   vehicle registration
0 company1 truck abc123
1 company1 truck abcdefg
2 company1 car 234cse
3 company1 forklift NaN
4 company1 truck 93ds2
5 company2 car rentall
6 company2 car rental2
7 company2 truck rentals
8 company2 truck rental*
9 company2 car rental5
10 company3 truck fdsa23
11 company3 truck asdf4
12 company3 other fdsag3
13 company3 other NaN
14 company3 truck gls319d

sample_data

我的目标是按公司和车辆类型获取计数(注册和车辆列将被删除)。

我已经尝试过这个:

import pandas as pd

df = pd.read_csv('path to csv', header=0)

df.loc[df.vehicle == 'truck', 'trucks'] = 1
df.loc[df.vehicle == 'car', 'cars'] = 1
df.loc[df.vehicle != 'truck', 'others'] = 1
df.loc[df.vehicle != 'cars', 'others'] = 1

从那里我假设某种 groupby 和 sum 函数会合并行和列。

不幸的是,这只会用“1”值填充车辆列,而不是在相应列中填充值。

我想要的输出是:


company trucks cars others
company1 3 1 1
company2 2 3 0
company3 3 0 2

我确信这个问题之前可能已经得到解答,但今天早上我的 google-fu 很弱。

干杯。

最佳答案

首次使用Series.map通过字典中过滤的类别,并将所有不匹配的值 (NaN) 替换为 Series.fillna .

然后传递到crosstab如果输出列的顺序很重要,请添加 DataFrame.reindex :

df['new'] = df.vehicle.map({'truck':'trucks', 'car':'cars'}).fillna('other')
df = pd.crosstab(df['company'], df['new']).reindex(['cars','trucks','other'], axis=1)
print (df)
vehicle cars trucks other
company
company1 1 3 1
company2 3 2 0
company3 0 3 2

关于python - Pandas 通过其他列的数量来填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61057389/

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