小白求助,求帮忙!!! 全部鱼币献上!
本帖最后由 Jamesonwjt 于 2020-2-24 23:16 编辑求问:
如果这是两个不同的表格1,2
表格1的空缺值可以在表格2当中找到;csv1空缺值7-12在csv2的最后面可以找到,且每一行的数据除空缺值之外都是一样的。
我只是对这个表格做了处理,把这些需要填充的空值项放到了最后,但是如果空值项和它对应的填充项分布在表格的不同地方,该怎么办?
怎么可以实现两个表格自动匹配所在行内空值之外的数据,对空值进行填充?
不知道有没有上传成功照片,以zip file的数据为准
求python大佬们指点
谢谢啦 数据是在Excel表格里面吗? 通过第一行的表头去匹配位置 xiangzhihengkan 发表于 2020-2-24 16:32
数据是在Excel表格里面吗?
嗯,是的是两个csv,如果可以的话可以写一下代码吗?跪谢 shake_a_tree@16 发表于 2020-2-24 16:52
通过第一行的表头去匹配位置
可以一下大致代码吗,跪谢 表格2不也是在4-7行吗? fan1993423 发表于 2020-2-24 20:43
表格2不也是在4-7行吗?
我这个是假设第一个dataframe和第二个dataframe不是同一行的,且是两个不同的csv。如果有思路的话,可以写一下码子吗,谢谢啦 要不,你发两个csv上来吧,不要求数据好多,有几行就行 fan1993423 发表于 2020-2-24 21:48
要不,你发两个csv上来吧,不要求数据好多,有几行就行
谢谢回复,我上传了一个zip,之后重新发布了一遍问题,如果我的描述您不明白,可以加个好友单独说 我自己编了个数据举了个例子,用了比较笨拙的办法,如果有更好的办法,我在提出来。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了 下载了不知道你问题解决没有,太晚了,明天撸代码。 fan1993423 发表于 2020-2-25 01:14
我自己编了个数据举了个例子,用了比较笨拙的办法,如果有更好的办法,我在提出来。
df1是一样的,考虑两 ...
好像还是不行。我把我的两个文件给您吧。在我的云盘,这个是链接 https://share.weiyun.com/559IlxO 这个是原件。
在这个里面需要用150k的那个文件里面的variety把另外一个文件的variety的空值给填充起来。
真的是太感谢您了! _摆架_回宫、 发表于 2020-2-25 01:22
下载了不知道你问题解决没有,太晚了,明天撸代码。
https://share.weiyun.com/559IlxO
在这个文件里面,这个是原件,之前的那个是我举的例子。
这个文件的要求是,用150k表格里面的variety去把另外一个文件的variety的空值填充满。
谢谢您的帮助! 你可以将表格空缺位置=下面的内容 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() Jamesonwjt 发表于 2020-2-24 19:32
嗯,是的是两个csv,如果可以的话可以写一下代码吗?跪谢
你附带的Desktop.zip中csv1中缺失的在csv2中是全有吗?写完代码之后发现并没有全部都有数据 本帖最后由 _摆架_回宫、 于 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:04
最佳答案,请看附件
能用5行代码搞定绝不用50行{:5_90:} 我这个试了没问题,不过最好的解法确实利用pandas的本性,就是18楼的解法是最好的 fan1993423 发表于 2020-2-25 16:30
我这个试了没问题,不过最好的解法确实利用pandas的本性,就是18楼的解法是最好的
numpy不会,哈哈,所以你写的方法看不懂。
pandas如果没有这个连接的方法,其实可以直接for row in csv2.iterrows():
能简单绝不搞复杂了
页:
[1]
2