Jamesonwjt 发表于 2020-2-23 22:40:48

小白求助,求帮忙!!! 全部鱼币献上!

本帖最后由 Jamesonwjt 于 2020-2-24 23:16 编辑

求问:

如果这是两个不同的表格1,2

表格1的空缺值可以在表格2当中找到;csv1空缺值7-12在csv2的最后面可以找到,且每一行的数据除空缺值之外都是一样的。

我只是对这个表格做了处理,把这些需要填充的空值项放到了最后,但是如果空值项和它对应的填充项分布在表格的不同地方,该怎么办?

怎么可以实现两个表格自动匹配所在行内空值之外的数据,对空值进行填充?

不知道有没有上传成功照片,以zip file的数据为准

求python大佬们指点

谢谢啦

xiangzhihengkan 发表于 2020-2-24 16:32:54

数据是在Excel表格里面吗?

shake_a_tree@16 发表于 2020-2-24 16:52:27

通过第一行的表头去匹配位置

Jamesonwjt 发表于 2020-2-24 19:32:53

xiangzhihengkan 发表于 2020-2-24 16:32
数据是在Excel表格里面吗?

嗯,是的是两个csv,如果可以的话可以写一下代码吗?跪谢

Jamesonwjt 发表于 2020-2-24 19:33:28

shake_a_tree@16 发表于 2020-2-24 16:52
通过第一行的表头去匹配位置

可以一下大致代码吗,跪谢

fan1993423 发表于 2020-2-24 20:43:53

表格2不也是在4-7行吗?

Jamesonwjt 发表于 2020-2-24 21:34:45

fan1993423 发表于 2020-2-24 20:43
表格2不也是在4-7行吗?

我这个是假设第一个dataframe和第二个dataframe不是同一行的,且是两个不同的csv。如果有思路的话,可以写一下码子吗,谢谢啦

fan1993423 发表于 2020-2-24 21:48:22

要不,你发两个csv上来吧,不要求数据好多,有几行就行

Jamesonwjt 发表于 2020-2-24 23:18:33

fan1993423 发表于 2020-2-24 21:48
要不,你发两个csv上来吧,不要求数据好多,有几行就行

谢谢回复,我上传了一个zip,之后重新发布了一遍问题,如果我的描述您不明白,可以加个好友单独说

fan1993423 发表于 2020-2-25 01:14:04

我自己编了个数据举了个例子,用了比较笨拙的办法,如果有更好的办法,我在提出来。import pandas as pd
import numpy as np
df1=pd.DataFrame({'age':,'name':['bill','david','cook','anna'],'sex':['male','male','male','female']})
df2=pd.DataFrame({'age':,'name':['david','bill','anna','cook'],'sex':['male','male','female','male']})
name2=df2.isnull()]['name']
for i2 in name2:
    index2=df2['name'].values.tolist().index(i2)
    index1=df1['name'].values.tolist().index(i2)
    df2['age']=df1['age']
print(df2)
df1是一样的,考虑两个表只需要知道一个表就行,就不做df1了

_摆架_回宫、 发表于 2020-2-25 01:22:52

下载了不知道你问题解决没有,太晚了,明天撸代码。

Jamesonwjt 发表于 2020-2-25 04:41:24

fan1993423 发表于 2020-2-25 01:14
我自己编了个数据举了个例子,用了比较笨拙的办法,如果有更好的办法,我在提出来。
df1是一样的,考虑两 ...

好像还是不行。我把我的两个文件给您吧。在我的云盘,这个是链接 https://share.weiyun.com/559IlxO   这个是原件。

在这个里面需要用150k的那个文件里面的variety把另外一个文件的variety的空值给填充起来。

真的是太感谢您了!

Jamesonwjt 发表于 2020-2-25 04:43:13

_摆架_回宫、 发表于 2020-2-25 01:22
下载了不知道你问题解决没有,太晚了,明天撸代码。

https://share.weiyun.com/559IlxO

在这个文件里面,这个是原件,之前的那个是我举的例子。

这个文件的要求是,用150k表格里面的variety去把另外一个文件的variety的空值填充满。

谢谢您的帮助!

wangka 发表于 2020-2-25 06:25:52

你可以将表格空缺位置=下面的内容

XiaoPaiShen 发表于 2020-2-25 07:16:42

import pandas as pd
import easygui as g

source_file = g.fileopenbox(msg=None, title='Select Source', default="*.xlsx", filetypes=None, multiple=False)
df_source = pd.read_excel(source_file, sheet_name=0)

source_dict = {}
cols = ['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Embarked']
df_list = df_source

for index, row in df_list.iterrows():
    key = (row['Survived'], row['Pclass'], row['Name'])
    value = , row['Age'], row['SibSp']]

    source_dict = value

print(source_dict)

# 参照下面的代码,读取新的文件,创建新的 df, 根据字典更新对应的行,在保存 excel
# key = row['类型']
#   elements = row['含有元素'].split(',')

#   for elem in elements:
#         result = result.get(elem, list())
#         result.append(fruit)

# # intialise data of lists.
# data = {'元素':[], '水果':[]}
# for key, value in result.items():
#   data['元素'].append(key)
#   data['水果'].append(','.join(value))

# new_df = pd.DataFrame(data)

# writer = pd.ExcelWriter(excel_file, engine='xlsxwriter')
# df.to_excel(writer, sheet_name='Sheet1', index=False)
# new_df.to_excel(writer, sheet_name='Sheet2', index=False)
# writer.save()

xiangzhihengkan 发表于 2020-2-25 13:53:05

Jamesonwjt 发表于 2020-2-24 19:32
嗯,是的是两个csv,如果可以的话可以写一下代码吗?跪谢

你附带的Desktop.zip中csv1中缺失的在csv2中是全有吗?写完代码之后发现并没有全部都有数据

_摆架_回宫、 发表于 2020-2-25 14:04:57

本帖最后由 _摆架_回宫、 于 2020-2-25 14:12 编辑

Jamesonwjt 发表于 2020-2-25 04:43
https://share.weiyun.com/559IlxO

在这个文件里面,这个是原件,之前的那个是我举的例子。


import pandas as pd



csv1 = pd.read_excel('csv1.xlsx')
csv2 = pd.read_excel('csv2.xlsx')


result = pd.merge(csv1['Name'],
                  csv2[['Survived','Pclass','Name','Sex','Age','SibSp','Parch','Ticket','Fare','Embarked']],
                  on='Name',
                  how='outer')
result.to_excel('csv3.xlsx')



最佳答案,请看附件

_摆架_回宫、 发表于 2020-2-25 14:13:07

_摆架_回宫、 发表于 2020-2-25 14:04
最佳答案,请看附件

能用5行代码搞定绝不用50行{:5_90:}

fan1993423 发表于 2020-2-25 16:30:09

我这个试了没问题,不过最好的解法确实利用pandas的本性,就是18楼的解法是最好的

_摆架_回宫、 发表于 2020-2-25 16:58:18

fan1993423 发表于 2020-2-25 16:30
我这个试了没问题,不过最好的解法确实利用pandas的本性,就是18楼的解法是最好的

numpy不会,哈哈,所以你写的方法看不懂。
pandas如果没有这个连接的方法,其实可以直接for row in csv2.iterrows():
能简单绝不搞复杂了
页: [1] 2
查看完整版本: 小白求助,求帮忙!!! 全部鱼币献上!