gpt4 book ai didi

python - 根据另一个数据集 pandas 中的值创建新数据集

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:33 26 4
gpt4 key购买 nike

我有一个数据集,其结构如下:

enter image description here

正如您在标题中看到的,/ 符号后的值是相同的,即 group_activityrevenue_freqrevenue每月 - 计算,并在/之前写入该组的名称,即乳制品牲畜等。

我正在用 Python 编写一个逻辑,首先检查是否有任何可用值,例如第一行 dairylivestock 没有任何值,但是家禽已填充。所以当检测到这一点时我想将这些值构造为:

enter image description here

这里是Sr。 Number 是一个数字,用于跟踪连续有多少种不同类型的事件。从 IA[x] 开始,其中 x 可以是 01-13

我该怎么做?要在此处查看工作表中的上述数据,请输入 GOOGLE SHEET LINK我有两张输入输出

最佳答案

这里是 MultiIndex 必要的预处理列名称 - 第一级按 / 之前的值,第二级值与每个第一级相同 - 因此创建助手 DataFrame df1 作者 Index.to_seriesSeries.str.split :

df = pd.read_csv('Sample Dataset - Input.csv')

df1 = df.columns.to_series().str.split('/', expand=True)
df1[['a','b','c']] = df1[0].str.partition(' monthly ')
df1[1] = df1[1].str.split('_', n=1).str[1]
df1[1] = df1[1].fillna(df1['b'].str.cat(df1['c'].str.strip('>')))
df1['a'] = df1['a'].str.strip('<')
print (df1[['a', 1]])
a 1
dairy/group_activity dairy activity
dairy/dairy_revenue_freq dairy revenue_freq
dairy/dairy_revenue dairy revenue
<dairy monthly - calc'd> dairy monthly - calc'd
livestock/group_activity livestock activity
livestock/livestock_revenue_freq livestock revenue_freq
livestock/livestock_revenue livestock revenue
<livestock monthly - calc'd> livestock monthly - calc'd
poultry/group_activity poultry activity
poultry/poultry_revenue_freq poultry revenue_freq
poultry/poultry_revenue poultry revenue
<poultry monthly - calc'd> poultry monthly - calc'd

然后通过MultiIndex.from_arrays创建MultiIndex ,因此可以通过 DataFrame.stack reshape ,通过DataFrame.dropna删除每行的缺失值和最后一个新专栏Sr。号码 by DataFrame.insert :

df.columns = pd.MultiIndex.from_arrays([df1['a'], df1[1]])

df2 = (df.stack(0)
.dropna(subset=['activity','revenue','revenue_freq'], how='all')
.rename_axis(('a','Raw'))
.reset_index(level=1))
df2.insert(0, 'Sr.Number', df2.groupby(level=0).cumcount() + 1)
print (df2)
1 Sr.Number Raw monthly - calc'd activity revenue revenue_freq
a
0 1 poultry 10000.000 yes 10000.0 monthly
1 1 poultry 2900.000 yes 725.0 weekly
5 1 poultry 250.000 no 3000.0 yearly
6 1 livestock 375.000 no 4500.0 yearly
6 2 poultry 600.000 no 600.0 monthly
7 1 livestock 666.667 no 8000.0 yearly
7 2 poultry 2000.000 no 2000.0 monthly
8 1 poultry 5000.000 no 5000.0 monthly
14 1 dairy 2000.000 yes 2000.0 monthly
19 1 poultry 1920.000 no 480.0 weekly

关于python - 根据另一个数据集 pandas 中的值创建新数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57000399/

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