小编Cor*_*ien的帖子

Python 检测 csv 文件中的定界符/分隔符

我有一个函数可以读取和处理*.csv多个数据帧中的文件。

但是,并非所有 CSV 文件都具有相同的分隔符。那么,python如何检测csv文件具有哪种类型的分隔符,然后在read_csv()函数中使用它来在pandas中读取它呢?

df = pd.read_csv(path, sep = 'xxx',header = None, index_col = 0)
Run Code Online (Sandbox Code Playgroud)

python csv delimiter separator pandas

8
推荐指数
1
解决办法
7689
查看次数

如何使列表唯一并保持被淘汰项目的索引?

我有两个清单。它们具有相同的大小和彼此相关的种类。我想让其中一个独一无二,并消除另一个列表中的相应元素。(所以我需要淘汰项的索引)。假设我们总是保留第一个并淘汰其他相同的项目。

例子:

my_list=[['A','B','C'],['D','Q'],['O','W','S'],['D','Q'],['D','Q']]
sec_list=[[1,2,5],[3,4],[5,6,4],[7,8],[2,5]]
Run Code Online (Sandbox Code Playgroud)

结果:

my_list=[['A','B','C'],['D','Q'],['O','W','S]]
sec_list=[[1,2,5],[3,4],[5,6,4]]
Run Code Online (Sandbox Code Playgroud)

我做了什么:

我知道如何通过以下代码使列表的元素唯一:

Uni=[]
[Uni.append(i) for i in my_list if i not in Uni]
Run Code Online (Sandbox Code Playgroud)

但它没有给我删除第二个列表中相应项目的索引。我试过循环:

index_remove=[]
for s,i in enumerate(my_list):
    for r,j in enumerate(my_list):
        if s!=r:
            if i==j:
                if s not in index_remove:
                    index_remove.append(s) 
Run Code Online (Sandbox Code Playgroud)

但它给了我所有类似项目的索引。不是应该删除的那个。

python list

6
推荐指数
0
解决办法
79
查看次数

如何对数据框中的列进行排序,以使第一行中的值从最大到最小?

我有以下数据框:

奥迪 现代 起亚 奔驰 特斯拉 大众汽车 沃尔沃
2019年 0.25 0.5 0.25
2020年 0.125 0.375 0.125 0.125 0.25
2021年 0.25 0.5 0.25

我想重新排列列,使第一行从最大到最小排序。所以列的顺序应该是梅赛德斯、奥迪/沃尔沃,其余的。

我尝试了df.sort_values()很多次,但总是出错。最常见的错误是关于 by 的用法。

python sorting dataframe pandas

3
推荐指数
1
解决办法
213
查看次数

在 python 上构建图像需要很长时间,机智消息:Buildingwheel for pandas (pyproject.toml): still running

我在 python 上构建 docker 镜像时遇到问题:下面的执行过程需要很长时间,大约 20 分钟:

Building wheel for pandas (pyproject.toml): still running...
Building wheel for pandas (pyproject.toml): still running...
Building wheel for pandas (pyproject.toml): still running...
Building wheel for pandas (pyproject.toml): still running...
Building wheel for pandas (pyproject.toml): still running...
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM python:3.11.2-buster
WORKDIR /app
COPY . .
RUN pip install -r /app/requirements.txt
CMD ["uvicorn", "main:app", "--host=0.0.0.0", "--port=80"]
Run Code Online (Sandbox Code Playgroud)

requirement.txt

fastapi
uvicorn
pydantic[dotenv]
requests
python-dotenv==0.19.2
pandas==1.4.3
numpy==1.24.2
scikit-learn==1.2.2
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
2840
查看次数

需要将每一列乘以 pandas 中该列的顶部单元格

我有以下 DF:

Score1 Score2 Score3
1      3      4
0      0      0
2      3      5
1      6      2
Run Code Online (Sandbox Code Playgroud)

我想将每一列乘以该列单元格的顶部。所以输出将是:

Score1 Score2 Score3
1      3      4
0      0      0
2      9     20
1     18      8
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python pandas

2
推荐指数
1
解决办法
179
查看次数

熊猫申请获取 KeyError:

我正在查看Roman Pekar的这个答案以使用 apply。我最初完全复制了代码并且运行良好。然后我在从 csv 文件创建的 df3 上使用它,并得到一个 KeyError。我检查了我使用的列的数据类型是 int64,所以没关系。我没有空值。如果我能让这个工作正常,那么我会让这个功能变得更复杂。我怎样才能让它发挥作用?

def fxy(x, y):
    return x * y

df3 = pd.read_csv(path + 'test_data.csv', usecols=[0,1,2])
print(df3.dtypes)
df3['Area'] = df3.apply(lambda x: fxy(x['Len'], x['Width']))
Run Code Online (Sandbox Code Playgroud)

追溯

Traceback (most recent call last):
File "f:\...\my_file.py", line 54, in <module>
df3['Area'] = df3.apply(lambda x: fxy(x['Len'], x['Width']))
File "C:\...\frame.py", line 8833, in apply
return op.apply().__finalize__(self, method="apply")
File "C:\...\apply.py", line 727, in apply
return self.apply_standard()
File "C:\...\apply.py", line 851, in apply_standard
results, res_index = self.apply_series_generator()
File "C:\...\apply.py", line 867, …
Run Code Online (Sandbox Code Playgroud)

python function pandas

2
推荐指数
1
解决办法
1893
查看次数

Python Pandas:分组依据和平均值、计数、中位数

假设我有一个看起来像这样的数据框

d = {'User' : ['A', 'A', 'B', 'C', 'C', 'C'],
     'time':[1,2,3,4,4,4],
     'state':['CA', 'CA', 'ID', 'OR','OR','OR']}
df = pd.DataFrame(data = d)
Run Code Online (Sandbox Code Playgroud)

现在假设我想创建新的数据帧,它采用时间的平均值和中位数,获取用户状态,并生成一个新列来计算用户出现在该列中的次数User,即

d = {'User' : ['A', 'B', 'C'],
     'avg_time':[1.5,3,4],
     'median_time':[1.5,3,4],
     'state':['CA','ID','OR'],
     'user_count':[2,1,3]}

df_res = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过这样的平均陈述来建立一个小组

df.groupby(['User'], as_index=False).mean().groupby('User')['time'].mean()
Run Code Online (Sandbox Code Playgroud)

这给了我一个 pandas 系列,我想如果我愿意的话我可以将其制作成一个数据框,但是我将如何为我感兴趣的所有其他列做上面的后者呢?

python pandas

1
推荐指数
1
解决办法
5319
查看次数

1
推荐指数
1
解决办法
1217
查看次数

如果该行中的列包含列表中存在的子字符串,如何选择 pandas 行

因此,如果我的 pandas df 有两列,国家和地点:

  Countries     Places
0        US   New York
1        UK   Old York
2    France      Paris
3     India  New Delhi
Run Code Online (Sandbox Code Playgroud)

我有一个这样的列表:l = ['New','Old']

我将如何选择位置列包含文本的行,该文本包含也存在于我的列表中的字符串。(整个字符串可能会或可能不会出现在列表中)(它应该创建一个仅包含美国、英国、印度但不包含法国的数据框)。(它会

python pandas

0
推荐指数
1
解决办法
2698
查看次数

如何在Python中将字符串“翻译”为整数?

我有以下 df:

print(df)
>>>
Marital Status       Income     Education 
  Married             66613       PhD  
  Married             12441       Bachelors 
  Single              52842       Masters Degree
  Relationship        78238       PhD
  Divorced            21242       High School
  Single              47183       Masters Degree
Run Code Online (Sandbox Code Playgroud)

我想将每个“字符串”转换为相应的数字(int)。例如

“已婚”应该是1

《单身》2

《关系》3

等等。

我还没有尝试过任何代码,因为在谷歌搜索大约 1 小时后我还没有找到任何合理的解决方案,但我确信该解决方案很可能非常简单。

编辑:语法

python string integer pandas

0
推荐指数
1
解决办法
91
查看次数