楼主: 科研吗喽
736 5

[数据管理求助] 数据清洗 [推广有奖]

  • 0关注
  • 0粉丝

高中生

65%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0436
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
170 点
帖子
16
精华
0
在线时间
54 小时
注册时间
2024-1-23
最后登录
2025-2-23

楼主
科研吗喽 发表于 2024-8-10 23:01:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求助大家,我有个数据是这样子的:

变量1  变量2  变量3  变量4          变量5
     a          b        c         d        公司名1;公司名2;公司名3(不一定是几个,可能是一个,可能是多个)
     e          f         g         h        公司名4;公司名5


大概就是这样的一个数据形式,我是希望把公司按照分号拆开,然后变量1-4相应地复制下来

变量1  变量2  变量3  变量4          变量5
     a          b        c         d        公司名1
     a          b        c         d        公司名2
     a          b        c         d        公司名3
     e          f         g         h       公司名4

     e          f         g         h       公司名5


求问需要什么样的代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:求助大家 数据形式 公司名

沙发
qgmyysj 在职认证  发表于 2024-8-12 14:45:16
用excel比较简单吧

藤椅
科研吗喽 发表于 2024-8-14 08:57:57
qgmyysj 发表于 2024-8-12 14:45
用excel比较简单吧
数据太大了没法导出到excel

板凳
gigh 在职认证  发表于 2024-8-14 16:01:24
可以用split函數 還有用forvalues功能,假設前四個變量不會變(var1 var2 var3 var4) 公司變量為var5,看上面的說明以 ;字符切割
先將變量切割後,將切割好的ˊ資料重整為需求的欄位。 forvalues的數字需依照實際切割完的變數量進行調整

  1. split var5 , p(;) // 以;符號進行分割,會自動建造var5 後綴序號1起的變數
  2. drop var5 // 刪除原本公司欄位

  3. **forvalues 依序逐一分割檔ˋ案
  4. forvalues i=1/3 {
  5.         preserve
  6.         drop if var5`i'== ""
  7.         keep var1-var4 var5`i'
  8.         rename var5`i' var5
  9.         save va`i',replace
  10.         restore
  11. }

  12. use va1,clear
  13. forvalues i=2/3 {
  14.         append using va`i',force
  15. }
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
科研吗喽 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
赵安豆 发表于 2024-8-15 08:34:33
你可以使用Python的pandas库来处理这个问题。以下是一个示例代码:

```python
import pandas as pd

# 创建原始数据的DataFrame
data = {'变量1': ['a', 'e'],
        '变量2': ['b', 'f'],
        '变量3': ['c', 'g'],
        '变量4': ['d', 'h'],
        '变量5': ['公司名1;公司名2;公司名3', '公司名4;公司名5']}

df = pd.DataFrame(data)

# 使用str.split将'变量5'列中的字符串按照分号拆分成列表,然后用explode展开这个列表
df['变量5'] = df['变量5'].str.split(';')
df = df.explode('变量5')

# 显示处理后的数据
print(df)
```

这段代码会创建一个包含原始数据的DataFrame。接下来它会对'变量5'列中的字符串进行拆分,并将结果展开,以生成一个新的行对于每个公司名的结果。

当你运行这个代码时,你将会得到类似下面这样的输出:

```
    变量1 变量2 变量3 变量4       变量5
0      a     b     c     d  公司名1
0      a     b     c     d  公司名2
0      a     b     c     d  公司名3
1      e     f     g     h  公司名4
1      e     f     g     h  公司名5
```

然后你可以重置索引,以消除行前面的重复数字:

```python
df.reset_index(drop=True, inplace=True)
print(df)
```
这样你就可以得到没有重复索引的数据了。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



地板
科研吗喽 发表于 2024-8-15 09:02:24
gigh 发表于 2024-8-14 16:01
可以用split函數 還有用forvalues功能,假設前四個變量不會變(var1 var2 var3 var4) 公司變量為var5,看上 ...
非常感谢您,很有用!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-7 18:55